您的位置:

Python编写自动化测试脚本实用技巧

一、常用测试框架

Python在测试领域有众多的测试框架可供选择。其中最为火热的是unittest和pytest。

unittest是Python自带的测试框架,其优点是稳定、可靠,使用者多。unittest提供了基本的测试组织结构,包括setUp()、tearDown()、setUpClass()、tearDownClass()、test_()等方法,使得各个测试用例模块之间更加灵活,互不影响。

pytest则是一个使用最广泛的第三方测试框架。pytest基于unittest的基础上,封装了更加友好和灵活的测试用例组织方式,拥有更多插件,支持参数化等功能。pytest的优点是在基本测试框架的基础上,内置了更多的测试工具和装饰器,便于测试代码编写和执行。

import unittest
class Test(unittest.TestCase):
	def setUp(self):
		pass
	def tearDown(self):
		pass
	def test_add(self):
		self.assertEqual(1+1,2)
if __name__=='__main__':
	unittest.main()

二、页面元素定位工具

在自动化测试中,页面元素的定位是非常重要的一部分。Python中常用的元素定位工具有selenium和pyautogui。

pyautogui是一个基于图像识别的自动化测试工具。pyautogui可以很方便的进行桌面应用测试和网页自动化测试。它支持全屏幕截图、图像标记定位,基于图像的打字和鼠标移动等功能。pyautogui的定位速度相对较慢,但是显然复杂场景下使用它效果更好。

selenium则是一个基于浏览器自动化的测试工具。selenium可以模拟用户在浏览器页面上的行为,如打开页面、输入文本、点击按钮等等,支持多种浏览器,最主要的是可以直接使用python的库进行操作,是目前最为常用的一种自动化测试框架。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser=webdriver.Chrome()
browser.get("http://www.python.org")
search=browser.find_element_by_name('q')
search.send_keys('Python')
search.send_keys(Keys.RETURN)
assert 'No results found.' not in browser.page_source
browser.close()

三、数据生成工具

自动化测试中,经常会用到数据生成工具。Python中常用的数据生成工具有Faker和HTTPretty。

Faker是一个假数据生成器,它可以按照自定义规则生成假数据,可以生成多种类型的数据,如姓名、地址、电话号码、邮件地址、网址等等。Faker的使用场景非常多,如测试账户注册时填写的数据、数据库测试数据等。

HTTPretty是一个虚拟HTTP客户端。在测试过程中,可以使用HTTPretty来模拟API服务响应,简化API测试代码的编写。

import faker
fake = faker.Faker()
print(fake.name())
print(fake.address())

四、测试报告生成工具

为了更好的管理测试用例和测试结果,测试报告是自动化测试中必不可少的一部分。Python中常用的测试报告生成工具有HTMLTestRunner、HTMLTestRunnerNew和allure-pytest。

HTMLTestRunner和HTMLTestRunnerNew都是基于unittest框架的测试报告生成工具。它们可以生成HTML格式的测试报告,清晰展示测试结果和测试用例运行情况,拓宽测试人员的测试范围。

Allure-pytest则是一个基于pytest框架的测试报告生成工具。Allure-pytest的优点是生成的报告十分美观,且拥有图表、统计功能等。它支持HTML和PDF格式的报告输出,除了定制测试报告结果,还支持对测试过程中的日志和截图进行输出。

import unittest
import HTMLTestRunner
class Test(unittest.TestCase):
	def setUp(self):
		pass
	def test_add(self):
		self.assertEqual(1+1,2)
	def tearDown(self):
		pass
if __name__=='__main__':
	suite=unittest.TestSuite()
	suite.addTest(Test('test_add'))
	filename='test_result.html'
	fp=file(filename,'wb')
	runner=HTMLTestRunner.HTMLTestRunner(
		stream=fp,
		title='TestReport',
		description='Generated by HTMLTestRunner'
		)
	runner.run(suite)

五、持续集成工具

作为当下最流行的DevOps工具,持续集成是不可或缺的一部分。Python中常用的持续集成工具有Jenkins、Travis CI和GitLab CI。

Jenkins是开源的持续集成工具。Jenkins可以实现从代码构建、单元测试、静态代码扫描到部署、测试和发布等整个开发过程,通过配置自动化流水线,支持许多插件且具有开放的API,可以与其他工具集成使用。

Travis CI和GitLab CI都是基于GitHub上的持续集成服务。通过在代码库中添加文件,就能够轻松地进行自动部署和测试了。这两个服务在早期的GitHub上十分受欢迎,由于与GitHub紧密结合,为开发人员提供了更加方便的体验。

总结:Python是目前最流行的自动化测试语言之一,Python在测试领域有着丰富的工具和库可以使用。上述提到的常用测试框架、页面元素定位工具、数据生成工具、测试报告生成工具和持续集成工具是Python自动化测试中不可或缺的一部分,希望这篇文章对大家有所帮助。