python--unittest常见问题

1、需要将用例的结果回写到excel文件中,但是用selfassert后,断言失败的,后面不能再执行

错误代码片段:

    @data(*datas)
    @unpack
    def test_add_fold(self, url, method, data, check):
        rd = []
        gold = MyRequest(url, method=method, headers={"cookie":self.cookie}, data = data)
        rd.append(gold.response)
        r = self.assertEqual(jsonpath.jsonpath(gold.response, '$..msg')[0],check['msg'])
        rd.append(r)
        self.results.append(rd)
        self.assertTrue(r)

    @classmethod
    def tearDownClass(cls):
        eb = WriteContentInOldBook(FILENAME, 0)
        for n,result in enumerate(cls.results):
            eb.write_content(n+1, 6, str(result[1]))
            eb.write_content(n+1, 7, json.dumps(result[0], ensure_ascii=False))
        eb.save_data()

正确代码片段:

    @data(*datas)
    @unpack
    def test_add_fold(self, url, method, data, check):
        rd = []
        gold = MyRequest(url, method=method, headers={"cookie":self.cookie}, data = data)
        rd.append(gold.response)
        if jsonpath.jsonpath(gold.response, '$..msg')[0] == check['msg']:
            r = True
        else:
            r = False
        rd.append(r)
        self.results.append(rd)
        self.assertTrue(r)

    @classmethod
    def tearDownClass(cls):
        eb = WriteContentInOldBook(FILENAME, 0)
        for n,result in enumerate(cls.results):
            eb.write_content(n+1, 6, str(result[1]))
            eb.write_content(n+1, 7, json.dumps(result[0], ensure_ascii=False))
        eb.save_data()

2、使用ddt时,当传入的data数据是一个二维数组时,执行错误

data1=[[1,2],[3,4]
@data(*datas1)     #注意传入的是一个二维数组时,一定要先解包
@unpack

datas2=[{"a":1,"b":2},{"a":3,"b":4}]
@data(**datas2)    #当传入的是一个字典时,也需要先解包
@unpack

3、一个用例使用@data执行多个用例时,使用BeautifulReport的报告中,将每个用例的结果都展示出来

4、如何将不同目录层级下所有的测试用例文件全找出来进行执行

**处理方法:**核心点是需要在根目录下的每级目录下都加上__init__.py文件,使用例的目录属性是python package
目录结构:
在这里插入图片描述
代码:

import unittest
# from HTMLTestRunner import HTMLTestRunner
from  BeautifulReport import BeautifulReport
import os

case_path=os.path.join(os.getcwd(),'project')
report_path=os.path.join(os.getcwd(),'report')
def all_case():
    discover = unittest.defaultTestLoader.discover(case_path,pattern="test*.py",top_level_dir=None)
    return discover

if __name__ == '__main__':
    mkdir(report_path)
    result = BeautifulReport(all_case())
    result.report(filename='单元测试报告',description='测试函数',report_dir='report', theme='theme_default')



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值