记一次问题的解决,web自动化用例的管理

一、问题概述:

测试人员习惯于使用手工用例来执行测试任务,手工用例已经使用测试平台管理。
当前需要开展webUI的自动化测试,本来的想法是在测试平台扩展UI测试的功能,但是在构思的时候,觉得它没有直接编写python脚本来的便利。
所以后来使用python+selenium+pytest来实现webUI的自动化测试。**一段时候后发现部分测试人员不知道哪些功能已经实现的webUI自动化测试,让他们自己去脚本中找,显然是不现实的。**
如果测试平台中的手工用例和脚本可以对应起来,这样当测试人员使用手工用例时,也就很容易知道该手工用例有没有实现自动化了。

二、需求分析

需求:

手工用例和自动化脚本建立对应关系

分析与方案:

pytest有很多种执行用例的方式,其中有一种用例路径的执行方式。
比如一条用例的路径是/testcase/test_case.py::TestCase_类名::test_用例名称,那么直接可以使用命令(pytest /testcase/test_case.py::TestCase_类名::test_用例名称) 来执行。
如果将这个路径添加到平台的手工用例中,那么它们的对应关系就建立了,同时还可以触发执行自动化用例。

三、实现

1. 建立对应关系

  在自动化工程中实现一个收集所有自动化用例的Web接口,通过该接口,测试平台可以给手工用例配置对应的自动化用例路径,如下两张图
script script

2. 执行

   因为UI用例执行比较耗时,所以这里就需要使用异步执行了。可以使用消息队列(执行队列和结果队列)的方式,来实现异步执行。
   因为执行请求和执行结果,在两个队列中,所以需要使用一个execid来给它们建立关系。也就是要在原来的执行命令中,添加一个参数execid,例如pytest /testcase/test_case.py::TestCase_类名::test_用例名称 --execid 1234455。
   这里我在conftest.py文件中实现了两个pytest的钩子函数pytest_addoption和pytest_collection_modifyitems,通过两个钩子函数,可以将命令中的execid保存到config对象中,并提供给执行结果。
script

3. 收集执行结果

   当用例执行完成后,使用钩子函数pytest_report_teststatus(也是conftest.py文件中实现),可以拿到执行结果(包括execid),并写入到结果队列,测试平台拿到结果后,就是可以形成一条完整的执行记录,并在手工用例中展示。
script script
原文地址:https://www.cnblogs.com/moonpool/p/13869972.html