pytest如何调用同一浏览器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest如何调用同一浏览器相关的知识,希望对你有一定的参考价值。

参考技术A 通过web驱动程序打开页面,
做test_1并断言它,
做test_2并断言它,
只有在那之后,司机才退出。
我问的原因是,当您断言test_1并且它失败时,test_2根本不会被测试,因为断言会退出测试。

最后,我可以同时做这两个断言,但
参考技术B 使用unittest的传统方式

这里就是使用unittest框架,执行之前DemoCase类下的用例前打开浏览器。

class DemoCase(unittest.TestCase):

def setUp(self): #每个用例执行之前
print('before test')
self.driver = webdriver.Chrome()

def test_demo1(self):
xxxx

def test_demo2(self):
xxxx

def tearDown(self): #每个用例执行之前
self.driver.quit()

if __name__ == '__main__':
unittest.main()
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
二、使用pytest实现打开一次浏览器

这里要用到conftest.py跟fixture了,在之前的文章里已经讲过。

还有一个点就是web自动化的原理,其实就是我们的代码向被测试的浏览器发送了一个http请求,然后浏览器接受请求,执行相应操作,并在Response中返回执行状态、返回值等信息。所以当你启动一次浏览器的时候就是产生了一次session,下面来实现以下就好了。

原理也很简单,在你case所在目录的上层创建conftest.py文件,不放心的可以放在项目根目录下。然后在conftest.py文件里定义一个全局的浏览器驱动,利用pytest的fixture特性,设置这个驱动的范围在整个session里,几行代码就可以了。

以上是关于pytest如何调用同一浏览器的主要内容,如果未能解决你的问题,请参考以下文章

(二)pytest测试框架

如何在同一页面上调用具有先前实例的浏览器选项卡

如何通过测试正确设置和拆卸我的 pytest 类?

我如何对这样的代码进行单元测试?

pytest文档61-fixture之name参数使用别名

pytest--fixure前置执行一个函数