测试框架的学习

unittest 单元测试框架

使用unittest框架的时候,所有的类都先继承unittest.TestCase方法

set up 以及 teardown 方法

import unittest
​
class LoginTestCase(unittest.TestCase):
​
    def setUp(self) -> None:
        print('准备工作')
​
    @classmethod  
    def setUpClass(cls) -> None:
        print('class set up')
​
    def test_login(self):
        username = 'tom'
        pwd = '123'
        expected = 'welcome'
        self.assertEqual(expected, 'welcome')
​
    def tearDown(self) -> None:
        print('还原工作')
​
    @classmethod
    def tearDownClass(cls) -> None:
        print('class tear down')

set up和teardown方法有两种,一种是类方法,也就是@classmethod方法,一种是函数方法,区别在于类方法只运行一次,只有在启动和结束的时候运行,函数方法每个用例执行的时候都会执行。

test suit 测试套件

测试套件是可以将多个用例组合起来执行,组成一个测试套件。添加用例的时候可以使用addTest方法。

suite = unittest.TestSuite() //实例化unittest中的testsuite方法可以完成测试套件的实例化

test loader 测试加载器

向测试套件添加测试用例使用add Test的方式过于低效了,另一种方式是适用加载器loader。

loader = unittest.TestLoader()
​
# 方法一: 通过测试用例类进行加载
suite.addTest(loader.loadTestsFromTestCase(MyTest1))
suite.addTest(loader.loadTestsFromTestCase(MyTest2))
​
# 方法二: 通过测试用例模板去加载
suite.addTest(loader.loadTestsFromModule(MyTest1))
suite.addTest(loader.loadTestsFromModule(MyTest2))
# 
# 方法三:通过路径加载
import os
path = os.path.dirname(os.path.abspath(__file__))
suite.addTest(loader.discover(path))

test runner 测试运行器

runner负责运行测试套件。

# 运行
runner = unittest.TextTestRunner()
runner.run(suite)

pytest 测试框架

pytest不需要继承初始类,import进来后就可以直接使用pytest。类中不能含有init方法,类和测试的命名方法中要包含test,运行的时候如果没有在编译器中指定testrunner为pytest的话,就需要设定main方法,然后执行pytest.main(),这时候loader会在整个项目路径下找到符合命名规范的用例进行执行,当然也可以指定文件查找,或者使用参数执行main方法使得输出中含有日志或者其他信息。

查找测试策略

pytest运行的时候会在当前目录下递归寻找符合用例规范的文件,也可以指定文件名称和用例名称执行 pytest test01.py :: test 01,也可以使用pytest中的mark标记。

给用例打标签

注册标签名,通过.ini配置文件,文件格式:

pytest

[markers]:

do::do

do::undo

代码中执行的时候就可以使用@pytest.marks.do / undo标记用例。

参数化处理

使用@pytest.mark.parametrize方式参数化

@pytest.mark.paramtrize方法传递的是两种值,前面是参数,后面是数据,数据定义的时候可以使用pytest.param方法定义id,id是自定义的,方便理解数据含义。

data_1 = [
    pytest.param(1, 2, 3, id="(a+b):pass"),  # id的值可以自定义, 只要方便理解每个用例是干什么的即可
    pytest.param(4, 5, 10, id="(a+b):fail")
]

fixture实现用例调用

import pytest
​
@pytest.fixture()
def init():
    print('init...')
    return 1
​
def test1(init):
    print('test1')
​
def test2(init):
    print('test2')
​
if __name__ == '__main__':
    pytest.main(['-s', '04 pytest Fixture.py'])

setup和teardown 函数

 

allure报告的集成

allure已经集成在pytest中,使用pip安装以后就可以使用pytest allure执行测试,结束后会generate生成报告,或者使用allure generate手动生成报告。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值