Python服务端测试开发实战
上QQ阅读APP看书,第一时间看更新

1.6.2 初始化清理

fixture的第二个特性是测试固件,因为在单元测试框架中,测试固件的主要作用是初始化与清理,所以说fixture函数的第二个特性是初始化清理。下面围绕UI自动化以及API自动化测试详细介绍fixture函数的初始化清理特性。

1.UI自动化测试案例

在pytest测试框架中,操作UI自动化测试需要安装针对selenium的pytest测试框架中的插件pytest-selenium,安装命令如下。

pip3 install pytest-selenium

插件安装成功后,下面结合UI自动化测试详细介绍fixture函数测试固件的特性。在UI自动化测试中,测试固件的初始化部分主要是打开浏览器并导航到被测试的地址,清理部分主要是关闭退出浏览器,代码如下。

备注:

在如上代码中,fixture函数init()中,函数形式selenium其实就是webdriver实例化后的对象,也可以把它理解为selenium=webdriver.Chrome()这样的一个过程。在init()函数中,yield前面是初始化部分,即打开浏览器并导航到被测试的地址;yield后面是清理部分,即测试后关闭并退出浏览器。如上代码的执行命令如下。

python3 -m pytest -v  --driver Chrome  test_fixture_ui.py

执行后的结果如图1-26所示。

图1-26 UI自动化测试执行结果

2.API自动化测试案例

下面详细介绍fixture函数测试固件在API自动化测试中的应用。业务场景是查询产品的信息,初始化和清理部分分别是添加产品和删除产品,即查看产品的前置动作是添加产品,查询产品后的后置动作是删除产品,下面依然以测试平台为例进行介绍,完善后的代码如下。

备注:

在如上代码中,fixture的apiInit()函数充当了测试固件,即被测业务场景的前置动作和后置动作(初始化和清理部分)。这样在测试函数中直接引用fixture的apiInit()函数时就不需要担心被搜索的产品是否存在,同时也能够保障API测试用例的独立性,即不管API测试用例怎么执行,不会使系统增加新的垃圾数据,也不会对系统中已有的数据做删除的操作。如上代码执行后的结果如图1-27所示。

图1-27 API自动化测试执行结果