Python单元测试框架对比

1、用例编写规则

unittest提供了testcases测试用例,testsuintes测试套件,testfixtures测试固件或夹具,testloader测试加载器,testrunner测试运行器,必须遵守以下规则:

1)测试文件必须先导入 import unittest

2)测试类必须继承 unittest.TestCase

3)测试方法必须以test开头

pytest:python的第三方测试框架,基于unittest的扩展框架,必须遵守以下规则:

1)测试文件必须以test_开头或以_test结尾

2)测试类必须以Test开头

3)测试方法必须以test开头

2、用例的前置和后置

unittest:

setUp/tearDown: 在每个用例之前或之后执行一次,打开浏览器,加载网页/关闭网页

setUpClass/tearDownClass:在每个类运行之前或之后执行一次,创建数据库连接,创建日志对象/关闭数据库连接,销毁日志对象

setUpModule/tearDownModule:在每个模块之前或之后执行一次

pytest:

方法级:

setup_mothod/teardown_mothod:在方法之前和之后

setup/teardown

函数级:

setup_function/teardown_function:在函数之前和之后

类级:

setup_class/teardown_classn:在类之前和之后

模块级:

setup_module/teardown_module:在模块之前和之后

还有:还可以在函数之前加@pytest.fixture()

3、断言

unittest: assertTure, assertEqual, assertIn

pytest: assert

4、报告

unittest: htmltestrunner

pytest:插件pytest-HTML, allure

5、失败重跑

unittest: 没有

pytest:pytest-returnfailures

6、数据驱动

unittest: ddt

pytest:@pytest.mark.parametrize装饰器

7、用例分类执行

unittest:默认执行所有,也可以通过testsuite来执行部分用例,或者-k参数

pytest: @pytest.mark


unittest主要做了什么

1、测试发现:从多个py文件中收集并且加载测试用例

2、测试执行:将测试用例按照一定的顺序和条件执行并生成结果

3、测试判断:通过断言去判断结果是否正确

4、测试报告:统计测试进度,通过率,生成报告

unittest重要组件

1、TestCase

2、TestSuite

3、TestFixture

4、TestLoader

5、TestRunner

TestCase用法

import unittest

class TestUnittest(unittest.TestCase):

    def test_one(self):
        print("unittest测试1")

    def test_two(self):
        print("unittest测试2")

1)使用unittest命令行的方式运行:

python -m unittest 模块名.类名 -v(详细信息)

python -m 以脚本的方式运行一个模块

python -v 更加详细的输出结果

python -k 匹配模式,通配符: -k *_one,字符串:-l one

集成Jenkins的时候使用,为什么?所有的命令行的方式都是非GUI的方式。

2)使用unittest.main(),以模块的方式运行

配置pycharm的环境或者使用python 模块名.py

读懂执行结果

.成功

F失败

E错误

S跳过

用例执行顺序

按照ASCII码规则:【0-9 A-Z a-z】A=65 a=97

框架底层原理

module='__main__',                    //测试用例所在的路径_main_表示当前模块
defaultTest=None,                     //待测用例的名称,默认所有
argv=None,                            //接收外部的参数  
testRunner=None,                      //测试运行器,TextTestRunner
testLoader=loader.defaultTestLoader,  //指定使用默认的测试用例加载器
exit=True,                            //是否在测试完成之后结束python程序
verbosity=1,                          //类似于命令行-v,0啥都没有,1有个点,2详细信息
failfast=None,                      
catchbreak=None,
buffer=None, 
warnings=None, *, 
tb_locals=False

只运行部分用例:

suite= unittest.TestSuite()
suite.addTest(TestUnittest("test_one"))
unittest.main(defaultTest='suite')
#unittest.TextTestRunner().run(suite)

addTests:加载多个用例

testcases = unittest.defaultTestLoader.discover(start_dir=os.getcwd(), pattern='*.py)
suite= unittest.TestSuite()
suite.addTests(testcases)
# unittest.main(defaultTest='suite')
unittest.TextTestRunner().run(suite)

跳过测试用例

@unittest.skip(“理由”)

@unittest.skipIf(“条件”,“理由”)

@unittest.skipUnless(“条件”,“理由”)

断言

assertEqual(a,b)          //断言a==b

assertNotEqual(a,b)     //断言a!=b

assertTure(a)               //断言a为真

assertFalse(a)              //断言a为假

assertIn(a,b)                //断言a在b里面

assertNotIn(a,b)          //断言a不在b里面

批量生成HTML报告

HTMLTestRunner.py    python\Lib

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值