pytest可以进行接口测试,app测试,可以进行任何测试,(unittest和pytest只是进行单元测试和断言的库),pytest提供的特性很适合做Web自动化测试,

之前测试用例中,断言之后直接加,driver.quit()是不行的,断言成功可以,断言失败就不行。所以直接加driver.quit()不行。

<一>、pytest用例标记mark

首先在python.ini里面注册一个标签,然后在用例函数的上面加上@pytest.mark.标签名,最后输入python -m "标签名称"

pytest也是可以右键运行的,但是需要把Default test修改成pytest。需要重启编辑器,如果还是不行,在run上面修改pytest,一般不建议这样操作,最好直接在下面命令行下输入python -m "标签名称"。

如果标记整个测试类,运行的时候,运行类下面的两个用例

如果同时运行两个标签也可以,pytest -m "demo and error_test",这是运行标签即要有demo也要有error_test。pytest -m "demo or error_test",这是只满足一个标签名就会运行。pytest -m "demo and not error_test",这是运行有demo标签但是没有error_test这个标签。

用例标记的时候,标签如果有逻辑运算,一定要加双引号,不要加单引号。

pytest断言用assert断言就行了,assert 1 == 2

 测试报告,pytest需要装一个html插件生成测试报告,pip install pytest-html,生成测试报告(--html=report.html)

pytest运行可以使用脚本运行方式运行,pytest.main(),如果需要报告格式带有日期,pytes.main(["--html={ }.html".format(ts),"-m error-test"])

pytest执行顺序,从上往下运行。

pytest的数据驱动,首先用读取excel中的相关数据,data=Handler.excel.read_data("login")

首先用@pytest.mark.parametrize实现参数化,pytest当中的数据驱动和unittest当中的ddt是非常相似的,

unittest当中的ddt,是@ddt.data(*data),括号中data传入的测试数据,pytest当中的数据驱动,@pytest.mark.parametrize("test_info", data)  

def test_demo_no_class(self,test_info)数据驱动pytest和unnitest的区别,1:pytest测试类中不需要加什么东西的,因为pytest当中可能没有类,2.pytest当中parametrize中第一个参数需要和下面的函数的参数要相等,data是一个列表,很多测试用例在里面。

数据驱动注意事项,使用pytest.make.parametrize做数据驱动的时候,和unittest不兼容,就不能使用unittest.TestCase,如果用unittest写用例,就要用unittest的数据驱动。
pytest有2个功能和unittest不兼容,1:fixture 2:hook

Pytest当中的前置和后置,yield,yield之前就是前置条件,yield之后就是后置条件,yield属于生成器。这个测试夹具可以直接放在pytest框架里的conftestest文件中。
pytest中有重运行机制,可以多条运行一条用例,可以把一条用例直接设置5次,安装重跑机制pytest-rerunfailures,pytest --reruns 2 --reruns-delay 5
pytest有丰富的插件系统,uinittest没有pytest这么多,网址http://plugincompat.herokuapp.com,有的插件不能用。
---逻辑封装

--登录的操作放在一个类当中,初始化了login_page对象
--测试代码和页面操作分开了,这样保证别人把页面操作改了,不影响测试代码