少一点问别人为什么,多一点问自己凭什么。我是范范,我为自己代言!

【unittest+testcase参数化】

上一篇 / 下一篇  2020-05-22 11:14:46 / 个人分类:环境搭建

自己搭建了框架来做接口自动化,但是出来的报告不好看,于是使用beautifulreport生成报告,需要用到unittest框架了,要写很多个testcase方法,如下:
import unittest
from api import login
from common import request_method

class TestTms(unittest.TestCase):

def setUp(self):

globals()["token"]={'Authorization': 'Bearer' + ' ' + login.tms_login('fanying@rouchi.com')}
pass
def test_case2_teacherInfo(self):
'''教师详情'''
self.rep = request_method.post_request("https://这里是url域名,自己写哈/api/teacher/info/basic/",
{"id":"2528"} ,headers=globals()["token"])
def test_case3_courseLabelList(self):
'''课程所有标签列表'''
self.rep = request_method.post_request("https://这里是url域名,自己写哈/api/course/label/list",
{} ,headers=globals()["token"])
def tearDown(self):
pass
这种时候如果用例很多,就要写几十个方法,不好维护,这里我使用了testcase参数化,引入parameterized模块,减少了很多代码量,如下:
import unittest
from api import login
from common import request_method
import parameterized
class TestTms(unittest.TestCase):
headers= {'Authorization': 'Bearer' + ' ' + login.tms_login('fanying@rouchi.com')}
case=[("case1","https:////这里是url域名,自己写哈/api/teacher/info/basic/",{"id":"2528"},headers),
("case2","https:////这里是url域名,自己写哈/api/course/label/list",{},headers)]

def setUp(self):
pass
'''下面的case需要另写一个文件,格式大概是case=[("/user/index",{"username":a,"password":"b"},{"Authoration":"ksjfjkb2g3jlmn45v3F6Vjh67"}),(),......],每一个()里面的参数分别对应下面的url,data,headers'''
    @parameterized.parameterized.expand(case)
def test_case(self,url,data,headers):
'''教师详情'''
rep = request_method.get_request(url, data, headers)
def tearDown(self):
pass
但是有个问题,这样写,如果我要跳过某个用例,该怎么办,目前我还不知道,有知道的大神指点下哦
最后出来的报告长这样:


TAG:

Fanny's secret garden 引用 删除 ITgirl范范   /   2021-08-30 18:10:10
def setUp(self):
        pass
    headers = {"Accept": "*/*", "sso-token": login.get_Session(),
               "Content-Type": "application/json;charset=UTF-8",
               "huohua-podenv": variable.env}
    huohua = huohuaDict
    for case in huohua:
            case = case
            c = [(getDicParam.getParam(case, huohua)[2],getDicParam.getParam(case, huohua)[1],getDicParam.getParam(case, huohua)[3])]
            @parameterized.parameterized.expand(c)
            def test_case(self,url,data,method):
                # 若请求是 get 则调用 get 方法,post 类似
                    if method is 'get':
                        rep = request_method.get_request(url,data,self.headers)
                    else:
                        rep = request_method.post_request(url,json.dumps(data),self.headers)
                    print(rep)
 

评分:0

我来说两句

Open Toolbar