BeautifulReport 测试报告

1.yaml 可以用来做数据驱动,比较灵活

import yaml   #用来读配置文件的比如file文件 文件以yaml和yml结尾   这种格式写用例比较容易处理,字典方便取值 取不到就没有不报错,主要是灵活。

f = open('login.yaml',encoding='utf-8')
res = yaml.load(f)   #加载读出文件 将键值对转化为字典
print(res)

比如:login.yml   
-  #是list的写法  可以防止字典相同的key覆盖

login.yaml

-
    url: /user/login
    method: post
    datail: 正常登陆
    data:
      mobile: 18380416336
      password: 123456
      clientType: 4
    check:
      - code
-
    url: /user/login
    method: post
    datail: 密码错误
    data:
      mobile: 13013001301
      password: 123456
      clientType: 4
    check:
        -code
2.利用yaml做数据驱动来做测试接口
import unittest,requests

import ddt  #   #可做参数化  自动读文件中数据

from BeautifulReport import BeautifulReport as bf

from urllib import parse

@ddt.ddt  #申明这个类要别ddt使用啦

class Login(unittest.TestCase):

         base_url = 'http://api.jianyitong.com'   #为给url统一加前缀   可写入配置文件比较好

         @ddt.file_data('login.yaml')#ddt帮你读文件,获取文件内容,循环调用函数,并且传给下面函数的如kwargs中,有多少条数据循环调用多少次下面的函数  注意修改文件open源码加入utf8编码打开不报错

         def test_request(self,**kwargs):

                   detail = kwargs.get('detail','没写用例描述')  # '''和%s组合来描述用例在这里无效。

                   self._testMethodDoc = detail  #动态的用例描述

                   url = kwargs.get('url')#url

                   url = parse.urljoin(self.base_url,url)#拼接好url  只能拼接 比如关于/的问题处理

                   method = kwargs.get('method','get')#请求方式给他一个默认值get  防止没有传请求方式

                   data = kwargs.get('data',{}) #请求参数

                   header = kwargs.get('header',{})#请求头

                   cookie = kwargs.get('cookie',{})#cookie

                   check = kwargs.get('check')

                   method = method.lower() #便于处理

                   try:

                            if method=='get':

                                     res = requests.get(url,params=data,cookies=cookie,headers=header).text

                                     #因为接口有异常的情况下, 可能返回的不是json串,会报错

                            else:

                                     res = requests.post(url,data=data,cookies=cookie,headers=header).text

                   except Exception as e:

                            print('接口请求出错')

                            res = e

                   for c in check:

                            self.assertIn(c,res,msg='预计结果不符,预期结果【%s】,实际结果【%s】'%(c,res))    #查看是否包含 断言查看一次错误就停止,后面加如错误提示  但check在yml中得是list方便查看是否包含。

 

sutie = unittest.TestSuite()

sutie.addTest(unittest.makeSuite(Login))#添加用例

run = bf(sutie)  #实例化

run.report('login_test','登录测试用例')

print(run.success_count) #通过的次数

print(run.failure_count)  #失败的次数

import unittest,requests
import ddt  #   #可做参数化  自动读文件中数据
from BeautifulReport import BeautifulReport as bf
from urllib import parse
@ddt.ddt  #申明这个类要别ddt使用啦
class Login(unittest.TestCase):
         base_url = 'http://api.jianyitong.com'   #为给url统一加前缀   可写入配置文件比较好
         @ddt.file_data('login.yaml')#ddt帮你读文件,获取文件内容,循环调用函数,并且传给下面函数的如kwargs中,有多少条数据循环调用多少次下面的函数  注意修改文件open源码加入utf8编码打开不报错
         def test_request(self,**kwargs):
                   detail = kwargs.get('detail','登录用例描述')  # '''和%s组合来描述用例在这里无效。
                   self._testMethodDoc = detail  #动态的用例描述
                   url = kwargs.get('url')#url
                   url = parse.urljoin(self.base_url,url)#拼接好url  只能拼接 比如关于/的问题处理
                   method = kwargs.get('method','get')#请求方式给他一个默认值get  防止没有传请求方式
                   data = kwargs.get('data',{}) #请求参数
                   header = kwargs.get('header',{})#请求头
                   cookie = kwargs.get('cookie',{})#cookie
                   check = kwargs.get('check')
                   method = method.lower() #便于处理
                   try:
                            if method=='get':
                                     res = requests.get(url,params=data,cookies=cookie,headers=header).text
                                     #因为接口有异常的情况下, 可能返回的不是json串,会报错
                            else:
                                     res = requests.post(url,data=data,cookies=cookie,headers=header).text
                   except Exception as e:
                            print('接口请求出错')
                            res = e
                   for c in check:
                            self.assertIn(c,res,msg='预计结果不符,预期结果【%s】,实际结果【%s】'%(c,res))    #查看是否包含 断言查看一次错误就停止,后面加如错误提示  但check在yml中得是list方便查看是否包含。
sutie = unittest.TestSuite()
sutie.addTest(unittest.makeSuite(Login))#添加用例
run = bf(sutie)  #实例化
run.report('login_test','登录测试用例')
print(run.success_count) #通过的次数
print(run.failure_count)  #失败的次数

版权声明:本文为qq_33106045原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。