pytest是一个使构建简单和可扩展测试变得容易的框架。测试具有表现力和可读性-不需要样板代码。数分钟内即可开始为您的应用程序或库进行小型单元测试或复杂的功能测试。
一、安装
-
使用在线安装命令:
-
pip install -U pytest (参数-U代表如果你已经安装了pytest,那么就升级到最新版本)
-
-
验证是否安装成功
-
pytest --version 查看当前安装的版本信息
-
pip list 当然也可以使用该命令查看所有安装的库来确认是否已经安装pytest
-
二、入门Demo
我们以测试一个add函数为例,完成入门 首先创建test_ demo.py 测试方法以test_ 开头
以函数形式编写测试用例
代码示例
-
#被测方法
-
def add(x, y):
-
return x + y
-
def test_add_1():
-
assert add(1, 2) == 3
Terminal中执行命令:pytest 或者直接在pycharm中右键 Run 'pytest for test_demo'
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
以类的形式编写测试用例
代码示例
-
def add(x, y):
-
return x + y
-
class TestDemo:
-
def test_add_1(self):
-
assert add(1, 5) == 6
-
def test_add_2(self):
-
assert add(1, 2) == 3
Terminal中执行命令:pytest 或者直接在pycharm中右键 Run 'pytest for test_demo'
我们使用参数-v 执行一次看下结果:
执行规则总结
收集用例规则:遍历所有目录下格式为test _ .py或 _test.py的文件(以Test开头的测试类,不包含有构造函数的) 执行用例规则:
-
执行某个包下所有的测试用例:pytest testapp(创建的包名,我们可以在该包下创建一个testdemo_02.py 同时添加测试方法)。此时你发现只是执行了该包下的测试用例。
-
如果包下有很多测试文件如何运行指定的测试文件?pytest testapp/testdemo_02.py ,这样就只是执行了该文件,其他文件不再执行
-
我们也可以在当前路径下指定执行的py文件:pytest test_demo.py
-
如何运行文件中指定的测试方法?pytest testdemo.py::testadd_1
-
如果是类的形式如何执行指定方法?pytest testdemo.py::TestDemo::testadd_1
总结:通过上面几个问题,我们整理执行规则
-
运行执行目录下的测试用例 使用命令 pytest 目录or包/目录or包
-
运行指定文件,使用命令 pytest 目录/文件 或者 pytest 文件
-
运行指定文件中类的函数,使用命令 pytest 文件::类名::函数
常用执行命名参数详解
-
-v 参数 pytest -v test_demo.py ,输出更加详细的测试信息,例如测试文件及用例名称
-
-q 参数 pytest -q test_demo.py ,输出简化信息(与-v参数相反)
-
-s 参数 pytest -s test_demo.py ,输出调试打印信息,默认没有该参数不输出
-
-m 参数 pytest -m test_demo.py ,执行打标记的测试时用例(后续我们可以专项打标记学习下,测试分组经常用到)
-
-k 参数 pytest -k "1" test_dem.py ,执行函数名中带有“1”关键字的用例
断言
pytest中断言结果直接使用assert就可以。assert 后面跟逻辑表达式
-
assert xx 判断xx是否为true
-
assert not xx 判断 xx不为true
-
assert a == b 判断 a是否等于b
-
assert a != b 判断 a不等于b
-
assert a in b 判断b是否包含a
-
assert a not in b 判断b中不包含a
测试结果含义
-
"."表示测试通过
-
"F"表示测试失败
-
"s"表示跳过该用例
-
"X" 预期失败但是用例成功执行了
-
"xfail" 预期失败执行也失败了
三、接口实例
学习了这些基本知识,我们就可以开始实战了。以网上免费获取天气信息接口为例,来具体看下如何使用pytest完成一个测试用例
-
接口地址:http://t.weather.sojson.com/api/weather/city/city_code
-
请求类型:get
-
请求参数:city_code=101030100 (天津)
预期结果:
-
验证返回状态码status是否等于200
-
验证cityInfo中返回的citykey是否为查询的id
代码示例
-
import requests
-
url = "http://t.weather.sojson.com/api/weather/city/"
-
city_code = "101030100"
-
class TestDemo:
-
def test_get_weather(self):
-
r = requests.get(url + city_code)
-
result_data = r.json()
-
print(result_data)
-
assert result_data["status"] == 200
-
assert result_data["cityInfo"]["citykey"] == "101030100"
执行命令:pytest -v -s test_demo.py
执行结果:
从执行结果中我们看到不仅仅打印了执行的文件、类名、方法,同时还打印了接口的返回结果。
暂时分享到这里,后续我们详细学习下pytest中的参数化用来解决批量验证多个城市的返回信息是否正确。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!