逼逼两句:目前测试自动化领域比较火就是这个pytest的自动化测试框架了,兄弟们抓紧学习呀。
我对个pytest了解、知道它的存在就是不会用,上不了手从而导致无法落实项目上。
跟我有一样处境的兄弟们,来一起组队打怪吧!欢迎组队,资源相互分享哦!!!
第一章:
一、pytest:
1.1安装pytest
1.在python环境下运行下命令即可:
pip install -u pytest
2.检查安装的朋友test的版本信息:
pyest --version
1.2创建第一个测试
test_sample.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
1.2.1内容补充:
pytest规则
结果类型:(以下是测试功能的几种常见的结果)
• PASSED(.):测试成功
• FAILED(F): 测试失败(断言失败)
• ERROR (E):错误
• XFAIL:预期失败,加了 @pytest.mark.xfail()
1.3运行多个测试
pytest会运行当前目录及子目录下所有以test_*.py和*_test.py命名的文件。
文件匹配方式遵循Standard test discovery rules(标准测试发现规则)
1.4 判断是否发生了指定的异常-------没有懂哦,后续研究
使用raises可以判断代码是否抛出了异常:
# test_sysexit.py 的内容
import pytest
def f():
raise SystemExit(1)
def test_mytest():
with pytest.raises(SystemExit):
f()
使用"quiet"模式来执行这个测试:
$ pytest ‐q test_sysexit.py
1.5将多个测试用例放在一个class中包含多个测试用例的class:
class TestClass(object):
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
1.5.1补充
前言:测试用例的预期结果是用例不可缺少的一部分,那么断言就是自动化测试不可缺少的一步,一个没有断言的用例,自动化测试的就没有意义了。
那什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed
Pytest里面使用关键字assert,断言为一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败
Assert 常用断言方式:pytest里面断言实际上就是python里面的assert断言方法,常用的有以下几种
• assert xx 判断xx为真
• assert not xx 判断xx不为真
• assert a in b 判断b包含a
• assert a == b 判断a等于b
• assert a != b 判断a不等于b
1.6为测试创建唯一的临时文件夹
pytest 提供 Builtin fixtures/function arguments来创建任意的资源,比如一个具有唯一的临时文件夹:
# test_tmpdir.py的内容
def test_needsfiles(tmpdir):
print(tmpdir)
assert 0
如果函数的签名中(函数签名包括函数的参数和返回值,以及参数的封送顺序等等)包含参数tmpdir,
pytest就会在执行测试用例之前查找并调用特定的fixture创建所需资源。
在本例中,pytest会创建一个unique-per-test-invocation临时文件夹
关于tmpdir的更多信息请参考Temporary directories and files 通过下面的命令可以查看所有内置的pytest fixture
1.6.1补充
pytest fixture
1.fixture概念
fixture是 pytest 用于将测试前后进行预备、清理工作的代码处理机制。
2.fixture优势
fixture相对于unittest中的setup和teardown来说有以下几点优势:
• fixure命名更加灵活,局限性比较小;
• conftest.py 配置里面可以实现数据共享,不需要import就能自动找到一些配置;
• scope="session"可以实现多个.py跨文件使用一个session来完成多个用例。
pytest之fixture的认识参考: https://blog.csdn.net/weixin_46745811/article/details/122384070