一.前言1.目前有两种纯测试的测试框架Pytest和Unittest2.Unittest应该是广为人知而且也是老框架很多人都用来做自动化无论是UI还是接口3.Pytest是基于Unittest开发的另一款更高级更好用的单元测试框架4.出去面试也好跟别人说起来也好Pytest的逼格明显高于Unittest二.为什么要用Pytest1.非常容易上手入门简单文档丰富文档中有很多实例可以参考2.能够支持简单的单元测试和复杂的功能测试3.支持参数化4.执行测试过程中可以将某些测试跳过(skip)或者对某些预期失败的case标记成失败5.支持重复执行(rerun)失败的case6.支持运行由 nose,Unittest编写的测试case7.可生成html报告8.方便的和持续集成工具Jenkins 集成9.可支持执行部分用例10.具有很多第三方插件并且可以自定义扩展三.安装Pytest1.cmd运行安装pip install-U pytest pip3 install pytest-i http://pypi.douban.com/simple/--trusted-host pypi.douban.com2.查看版本pytest--version四.Pytest开始使用# -*- coding: utf-8 -*-deffunc(x):returnx1deftest_answer():assertfunc(3)5classTestClass:deftest_one(self):xthisasserthinxdeftest_two(self):xhelloasserthasattr(x,check)1.然后cmd进入当前文件目录直接执行pytest2.说明2.1.如果只执行pytest会查找【当前目录及其子目录下】以test_*.py或*_test.py文件找到文件后在文件中找到以test开头函数并执行2.2.如果只想执行某个文件pytest start.py2.3.加上-q就是显示简单的结果pytest-q start.py五.Pytest用例的设计原则1.用Pytest写用例时候一定要按照下面的规则去写否则不符合规则的测试用例是不会执行的1.1.文件名以test_*.py文件和*_test.py文件1.2.以test_开头的函数1.3.以Test开头的类不能包含__init__方法1.4.以test_开头的类里面的方法1.5.所有的包package必须要有__init__.py文件六.Pytest执行用例规则1.注意下面讲的都是在cmd中执行pytest命令2.某个目录下所有的用例pytest3.执行某一个py文件下用例pytest 脚本名称.py4.运行start.py模块里面的某个函数或者某个类某个类里面的方法4.1.加v和不加-v都可以加-v的话打印的信息更详细pytest-v 08_mark.py::TestClass::test_method pytest 08_mark.py::TestClass::test_method pytest start.py::test_answer5.运行start.py模块里面测试类里面的某个方法pytest start.py::TestClass::test_two6.-m 标记表达式后续讲解pytest-m login6.1.将运行用pytest.mark.login装饰器修饰的所有测试后面再展开讲标记7.-q简单打印只打印测试用例的执行结果pytest-q start.py8.-s详细打印pytest-s start.py9.-x遇到错误时停止测试pytest start.py-x10.—maxfailnum当用例错误个数达到指定数量时停止测试pytest start.py--maxfail111.-k匹配用例名称11.1.执行测试用例名称包含http的所有用例 pytest-s-k http start.py12.-k根据用例名称排除某些用例pytest-s-knot httpstart.py13.-k同时匹配不同的用例名称pytest-s-kmethod or weibostart.py14.-k同时匹配相同的用例名称pytest-s-kmethod and weibostart.py七.Pycharm运行Pytest1.在Pycharm写代码怎么可能一直用cmd来跑用例呢现在就来看看在Pycharm中如何运行Pytest1.1.首先先要去settings【文件-设置】里面设置单元测试框架为Pytest1.2.如果是nosetests的话右键运行是以python脚本运行的1.3.如果设置unittest则是以unittest框架去运行