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自动化测试执行结果