在当今快速发展的互联网时代,UI 需求越来越大、越来越高大上、越来越复杂,相对应的 App 作为最重要的大前端的一部分,也不可避免。
App 迭代的不断加速,需求的不断复杂化,给测试人员增加了非常大的工作量,但是没办法,测试是保证产品质量的一道非常重要的关卡,只有通过这道关卡,产品的质量才能得到真正的提高。
但是随着 App 的需求复杂化,测试人员似乎已经没有很多精力去应对这一场景,所以自动化测试就出世了,让机器来帮我们做大量的、复杂的、重复的测试工作,是现在测试的趋势。
选择正确的**自动化测试工具**,也是一件非常重要的事情。
Appium 是一个开源测试自动化框架,可用于本地、混合和移动 web 应用程序。 它使用 WebDriver 协议驱动 iOS、Android 和 Windows 应用程序。可以用于做自动化测试。
编写完 Excel 表格,我们需要使用 Python 的 OpenPyXI 对 Excel 表格进行读取解析:
def get_cases(self, sheet_name):
sheet_name=sheet_name
sheet=self.workbook[sheet_name]
max_row=sheet.max_row
cases=[]
for r in range(2, max_row + 1):
case=Case()
case.id=sheet.cell(row=r,column=1).value
case.title=sheet.cell(row=r,column=2).value
case.data=sheet.cell(row=r,column=3).value
case.expacted=sheet.cell(row=r,column=4).value
cases.expacted=sheet.cell(row=r,column=4).value
cases.append(case)
if type(case.data) == str
case.data = json.loads(case.data)
return cases
当测试完成之后,需要把测试的结果写入到 Excel:
def write_result(self,sheet_name,row,result,actual=None):
sheet=self.workbook[sheet_name]
sheet.cell(row,5).value=result
sheet.cell(row,6).value=actual
self.workbook.save(filename=self.file_name)
测试用例设计完,我们需要执行,我们需要自动化测试操作页面上的元素,所以我们得获取元素。
获取到了元素的位置。
获取元素定位的一些参数,有:
unittest 的主要语法包括:
来个小案例:实现一个测试用例,测试一个加法函数
TestCase 就是测试用例的意思。
import unittest
def add(x, y):
return x + y
class Test01(unittest.TestCase):
def testadd01(self):
add(2, 3)
def testadd02(self):
add(10, 10)
# testing.....
unittest.main("test01_testcase")
import unittest
from Unittest import Test01
suite = unittest.TestSuite()
suite.addTest(Test01("testadd01"))
# testing......
runner = unittest.TextTestRunner()
runner.run(suite)
TestLoader 可以执行多个测试文件(查找 test 开头的 .py 测试文件)。
现在有个小案例:
运行 tests 目录下 test1.py~test5.py
文件。
import unittest
suite = unittest.defaultTestLoader.discover("../tests")
unittest.TextTestRunner().run(suite)
那么测试完 UI 界面之后,我们如何更好地去单独测试 API 层面呢?我们需要借助一些比较出色的 API 工具去进行测试,比如 Apifox。
我们需要先创建一个 API 请求,填入路径、名称、请求方法。
接着我们到 后置脚本 中,选择自定义脚本。
Apifox 已经为我们提供了现成的脚本语句,我这里想要判断返回的 status code 是否为 200。
然后点击保存按钮,即可成功创建请求。
到运行页,点击发送按钮,则可得到响应,以及断言结果。