美文网首页
python 15 unittest模块

python 15 unittest模块

作者: 6c0fe9142f09 | 来源:发表于2018-08-13 18:07 被阅读35次

unittest是一个具有查找用例、执行用例、校验结果、产生用例的模块,能够极大的方便我们的自动化测试


安装

pip intall unittest

测试用例及测试集合

  • unittest中的方法
# 被测方法
def calc(a,b):
    return a//b
# 创建一个测试类,继承自unittest.TestCase
class test(unittest.TestCase):
    # 每个case的前置动作
    def setUp(self):
        print('set up!')

    # 所有case的前置动作,可以将数据库连接放到里面
    @classmethod
    def setUpClass(cls):
        print("setUpClass")

    # 测试case
    # equal断言
    def test_case1(self):
        print("test_cast1")
        res = calc(4,2)
        self.assertEqual(res,2,msg='expect is not equal 2') # res == 2

    # 测试case
    # in断言
    def test_case2(self):
        print("test_cast2")
        res = calc(5,1)
        self.assertIn(res,[5,2],msg='expect is not equal 5 or 2')# res in [5,2]

    # 每个case的后置动作
    def tearDown(self):
        print('tearDown!!')

    # 所有case的后置动作
    @classmethod
    def tearDownClass(cls):
        print("tearDownClass")
    
    # 后面会讲到
    def say(self):
        print("say")
  • unittest.main()
if __name__ == '__main__':
    # main()方法使用TestLoader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行他们。
    # 这事我们可以看到say函数并没有被执行到
    unittest.main()
  • unittest.TestSuite()--测试集合
    testsuit相当于一个测试集合,如果我们有10个测试类,现在我们想执行其中的5个测试类,这时就可以用到测试集合了
suite = unittest.TestSuite() # 定义一个测试用例集合
suite.addTest(test('say'))  # 将test的say方法添加到测试类中
suite .addTest(unittest.makeSuite(test))  # 将类中的所有测试方法添加到测试集合中(所有以test开头)

测试执行器

  • unittest.TextTestRunner()--文本执行器
# 测试的执行结果会实时的打印在控制台上
runner = unittest.TextTestRunner()
runner.run(suite)
  • HTMLTestRunner.HTMLTestRunner--HTML执行器
pip install HTMLTestRunner
re = open('report.html','wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=re,
                                       title="测试标题",
                                       description="大树的测试报告描述")
runner.run(test_suite)
re.close()
report.html
  • BeautifulReport--好看的HTML测试执行器
链接:https://pan.baidu.com/s/1W04YSu7FgoaoTDlIe-tgAw 密码:tgln
解压后将BeautifulReport拖到自己的环境变量中
report = BeautifulReport.BeautifulReport(test_suite)
report.report(description="大树的测试报告",filename='report3.html')
如果想要在报告中显示每条用例的注释
    def test_case2(self):
        '''这是一个测试用例描述''' # 添加这一行
        print("test_cast2")
        res = calc(5,1)
        self.assertIn(res,[5,2],msg='expect is not equal 5 or 2')# res in [5,2]
report3

相关文章

网友评论

      本文标题:python 15 unittest模块

      本文链接:https://www.haomeiwen.com/subject/alvubftx.html