1、前后置 所谓前后置,就类似unittest 框架中的setup 和teardown ——执行用例前打开浏览器(前置),执行结束关闭浏览器(后置)。例如: 上面代码打印的部分就是setup 、setup_class 、teardown 、teardown_class 每个方法的说明 可是如果还有另一个文件,也需要这些操作【比如ui自动化每个用例都要打开浏览器执行】我们就需要对这几个公用的方法进行一下封装了。注:公用的库,习惯上都会定义为common 我们新建一个名为common 的package ,然后在里面创建common_util 文件,新建类CommonUtil 把公用方法剪切到这个类里面 然后其他类只需要继承这个类即可【python基础知识】
以上就是我们学unittest 时的思路。但是现在如果有新需求:只有一个用例需要前置条件,其余的都不需要。那这个时候该怎么办呢?似乎这种继承的方法就不那么灵活了。 这个时候就引出了fixture 来实现部分前后置 语法:@pytest.fixture() 参数: scope --作用域 function:函数之前和之后执行 class:类之前和之后执行
package/session:整个项目会话之前和之后执行
autouse --自动执行
默认:False;如果改为True,则不需要调用,在对应的作用域会自动执行 ...
先举个通俗的例子: 把CommonUtil 里面的代码注释掉,直接pass,让它不再生效 然后修改测试文件: 执行后就可以看到,只有test_py 方法调用了exe_sql 方法。 加上第二个参数autouse 值为True ,执行就可以看到所有用例都引用了exe_sql 方法 到目前为止,所有都是“之前”执行,“之后”怎么做呢 “之后”要用yield 执行结果: 注:一个文件中可以有多个fixture ,可以按照需要添加多个 但是fixture 这个固件只在当前文件生效,其他文件是不会生效的,如果其他文件要生效就要配置conftest.py 文件了。 而且还有很多其他参数,这些我们明天再说。
|