赞
踩
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
pip install pytest
pytest --version # 会展示当前已安装版本
官方文档:https://docs.pytest.org/en/latest/contents.html
在pytest框架中,有如下约束:
- 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
- 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
- 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
- 分享他们的经验,还会分享很多直播讲座和技术沙龙
- 可以免费学习!划重点!开源的!!!
- qq群号:110685036
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): #测试用例,第二个测试方法
- pass
4.在用例中使用断言
Pytest 最常用的断言一般有以下五种:
assert xx:判断 xx 为真
assert not xx:判断 xx 不为真
assert a in b:判断 b 包含 a
assert a == b:判断 a 等于 b
assert a !=b:判断 a 不等于 b
添加断言在对应的方法里面,做判断测试用例结果是否满足预期,示例如下:
5.优化断言
如果想要在失败的时候看到更详细的信息,可以在断言上添加说明,示例如下:
执行结果如下图,可以看到失败时断言的说明信息:
cmd 窗口,然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py
如果当前路径已经是放测试用例文件的文件夹下,想要测试文件,则直接可以输入pytest 测试文件名 即可:
如果只输入 pytest,则会默认执行当前文件夹下所有以 test_开头(或_test 结尾)的文件。
写法如截图所示,pytest.main()(参数以列表的形式给出,如截图)
执行当前文件所在路径下的文件,指定文件名则执行指定的文件,若没指定,执行所有 test_开头或者_test 结尾的文件。
也可以新建一个main.py文件
- import pytest
-
- if __name__ == '__main__':
- pytest.main() #程序入口
pytest路径/文件名::类名::方法名例如
如果是用 pycharm 写法如图,与上面的命令行等价:
常用的 pytest 带参数执行:列举几种,其余扩展可以自行百度
不带参数执行结果:
带参数执行结果:
.代表一个测试用例通过,…代表两个测试用例通过,以此类推;
s,即Skip,代表用例跳过执行;
F,即Failure,一般是断言发生错误;
E,即Error,一般是用例执行过程中报错。
fixtures(夹具)可以在测试用例执行之前,执行之后,自动执行一些代码
在不同用例中,相同的代码进行复用
在不同用例中,实现依赖管理
pytest的夹具,本质是“函数”,加上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 d
在测试用例的参数列表中,加上夹具名称,夹具就会被自动地使用。
通过使用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次浏览器
创建夹具,可以指定夹具的共享范围,在共享范围内的用例,会共享同一个夹具。
pytest的夹具共享范围有5个:
function(默认,最小,自己和自己共享,不和其他用例共享)
class(同一个类中)
module(文件)
package(文件夹)
session(会话,最大,全局)
- @pytest.fixture(scope='function')
- def driver():
- d = webdriver.Chrome()
- d.get("http://101.34.221.219:8010/") # 控制浏览器,访问百度
- d.quit()
- return d
在fixture这个装饰器中传递一个范围参数,用来说明用例在什么范围中是相互共享的。
我们解决了多次打开浏览器的问题,那么下一个问题是元素的定位存在重复,下面我们去处理这个问题。
下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
资料获取方式 :
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。