2026/4/29 15:51:38
网站建设
项目流程
深圳做地铁的公司网站,建设一个网站的硬件要求吗,wordpress 繁体,顺德新网站建设1. pytest
pytest是一个非常成熟的全功能的Python测试框架#xff0c;主要有以下几个特点#xff1a;
简单灵活#xff0c;容易上手支持参数化能够支持简单的单元测试和复杂的功能测试#xff0c;还可以用来做selenium/appnium等自动化测试、接口自动化测试#xff08;p…1. pytestpytest是一个非常成熟的全功能的Python测试框架主要有以下几个特点简单灵活容易上手支持参数化能够支持简单的单元测试和复杂的功能测试还可以用来做selenium/appnium等自动化测试、接口自动化测试pytestrequestspytest具有很多第三方插件并且可以自定义扩展比较好用的如pytest-selenium集成selenium、pytest-html完美html测试报告生成、pytest-rerunfailures失败case重复执行、pytest-xdist多CPU分发等测试用例的skip和xfail处理可以很好的和jenkins集成report框架----allure 也支持了pytest1.1安装pip install pytest1.2 验证安装pytest --version # 会展示当前已安装版本1.3 pytest文档官方文档https://docs.pytest.org/en/latest/contents.html在pytest框架中有如下约束所有的单测文件名都需要满足test_*.py格式或*_test.py格式。在单测文件中测试类以Test开头并且不能带有 init 方法(注意定义class时需要以T开头不然pytest是不会去运行该class的)在单测类中可以包含一个或多个test_开头的函数。此时在执行pytest命令时会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。1.4 创建测试用例1.创建test_开头的文件测试文件以 test_xx.py 命名需要以 test_开头或_test 结尾2.若是新建类测试类需要以 Test_开头并且不能带有 init 方法Test开头的类这个类也叫做测试套件类下面的是函数才是测试用例3.测试用例方法需要以 test_开头import pytest #导入pytest模块 def test_beifan(): #测试用例 pass class TestBaili: #测试套件 def test_a(self): #测试用例第一个测试方法 pass def test_b(self): #测试用例第二个测试方法 pass4.在用例中使用断言Pytest 最常用的断言一般有以下五种assert xx判断 xx 为真assert not xx判断 xx 不为真assert a in b判断 b 包含 aassert a b判断 a 等于 bassert a !b判断 a 不等于 b添加断言在对应的方法里面做判断测试用例结果是否满足预期示例如下5.优化断言如果想要在失败的时候看到更详细的信息可以在断言上添加说明示例如下执行结果如下图可以看到失败时断言的说明信息1.5 执行测试用例1.5.1 使用命令行执行cmd 窗口然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py如果当前路径已经是放测试用例文件的文件夹下想要测试文件则直接可以输入pytest 测试文件名 即可如果只输入 pytest则会默认执行当前文件夹下所有以 test_开头或_test 结尾的文件。1.5.2 IDEPyChram执行写法如截图所示pytest.main()参数以列表的形式给出如截图执行当前文件所在路径下的文件指定文件名则执行指定的文件若没指定执行所有 test_开头或者_test 结尾的文件。也可以新建一个main.py文件import pytest if __name__ __main__: pytest.main() #程序入口1.5.3 执行指定文件指定方法1.5.3.1 命令行编写方式pytest路径/文件名::类名::方法名例如1.5.3.2pycharm 编写方式如果是用 pycharm 写法如图与上面的命令行等价1.5.4 带参数执行常用的 pytest 带参数执行列举几种其余扩展可以自行百度1.5.4.1 pytest -q简化控制台的输出不带参数执行结果带参数执行结果1.5.4.2 Pytest -v 输出用例更加详细的执行信息比如用例所在文件和用例名称1.5.4.3 pytest -k 执行用例中包含‘关键字’的用例1.5.4.4 pytest -s 输出用例中的调试信息比如 print 打印信息如果不加参数则不输出待执行的用例1.5.4.5 pytest -m执行‘标记’的内容执行特定的测试用例执行有相同标记的测试用例添加标记的方法如下1.5.4.6 pytest -x执行失败则停止执行后面的用例不会被执行1.5.4.7 pytest --maxfailn执行失败 n 次之后停止执行n 是执行失败的次数1.5.4.8 pytest --countn 执行用例 n 次n2 就是执行两次1.5.4.9 pytest --lf last failed重新运行上次失败的用例若没有失败的会全部跑1.5.4.10 pytest --ff failed first重新运行所有用例但首先运行上次失败的用例1.6 读懂测试结果.代表一个测试用例通过…代表两个测试用例通过以此类推s即Skip代表用例跳过执行F即Failure一般是断言发生错误E即Error一般是用例执行过程中报错。1.7 pytest的fixuresfixtures(夹具)可以在测试用例执行之前执行之后自动执行一些代码在不同用例中相同的代码进行复用在不同用例中实现依赖管理1.7.1 创建fixturespytest的夹具本质是“函数”,加上fixtures装饰器。夹具函数fixtures装饰器创建一个conftest.py文件import pytest from selenium import webdriver from selenium.webdriver.common.by import By pytest.fixture() def driver(): d webdriver.Chrome() d.get(http://101.34.221.219:8010/) # 控制浏览器访问百度 d.quit() return d1.7.2 使用fixtures在测试用例的参数列表中加上夹具名称夹具就会被自动地使用。通过使用fixtures实现复用fixture中的代码再用例中调用import pytest #导入pytest模块 def test_beifan(): #测试用例 pass class TestBaili: #测试套件 def test_a(self,driver): #测试用例第一个测试方法 pass def test_b(self,driver): #测试用例第二个测试方法 pass这样就会打开自动两次浏览器了。有个要求两个测试用例只启动一次浏览器100个测试用例但是只启动1次浏览器1.7.3 fixture的范围创建夹具可以指定夹具的共享范围在共享范围内的用例会共享同一个夹具。pytest的夹具共享范围有5个function(默认最小自己和自己共享不和其他用例共享)class(同一个类中module(文件)package(文件夹)session(会话最大全局pytest.fixture(scopefunction) def driver(): d webdriver.Chrome() d.get(http://101.34.221.219:8010/) # 控制浏览器访问百度 d.quit() return d在fixture这个装饰器中传递一个范围参数用来说明用例在什么范围中是相互共享的。我们解决了多次打开浏览器的问题那么下一个问题是元素的定位存在重复下面我们去处理这个问题。最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料这些资料希望能给你前进的路上带来帮助。视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。