文章插图
1、前言在自动化测试中 , 我们往往将自动化脚本都归纳属于哪种框架模型 , 比如关键字驱动模型等 。
本篇将列举实际自动化测试中 , Python/ target=_blank class=infotextkey>Python 自动化测试的五种模型:线性模型、模块化驱动模型、数据驱动模型、关键字驱动模型、行为驱动模型 。
2、线性模型通过录制或编写脚本 , 一个脚本完成一个场景(一组完整功能操作) , 通过对脚本的回放进行自动化测试 。
脚本代码:
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wAIt(30)driver.get('https://www.baidu.com/')time.sleep(1)driver.find_element_by_id('kw').send_keys('自动化测试')time.sleep(1)driver.find_element_by_id('su').click()time.sleep(1)driver.quit()
3、模块化驱动模型将脚本中重复可复用的部分拿出来写成一个公共的模块 , 需要的时候就调用它 , 这样可以大幅提高测试人员编写脚本的效率 。框架目录:
文章插图
config 存放配置文件 。
例如 base_data.json 文件 , 存放测试地址 。
{"url": "https://www.baidu.com/"}
data 存放测试数据 。drivers 存放浏览器驱动文件 。
文章插图
report 存放执行完成后的测试报告 。
test 存放测试用例 。
文章插图
case 测试用例步骤 。
例如 testSearch.py:
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timeimport osimport unittestfrom selenium import webdriverfrom AutomatedTestModel.ModularDriverModel.utils.ReadConfig import ReadConfigfrom AutomatedTestModel.ModularDriverModel.test.pages.searchPage import SearchPageclass TestSearch(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)def tearDown(self):self.driver.quit()def get_url(self):current_path = os.path.abspath((os.path.dirname(__file__)))data = https://www.isolves.com/it/cxkf/yy/Python/config/base_data.json")return data['url']def test_search(self):url = self.get_url()self.driver.get(url)time.sleep(1)search = SearchPage(self.driver)search.search('自动化测试')if __name__ == '__main__':unittest.main()
common 存放公共的方法等 。pages 存放页面元素与页面操作 。
例如 searchPage.py:
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timeclass SearchPage:def __init__(self, driver):self.driver = driverdef search_element(self):self.kw = self.driver.find_element_by_id('kw')self.su = self.driver.find_element_by_id('su')def search(self, data):self.search_element()self.kw.send_keys(data)time.sleep(1)self.su.click()
runner 存放运行脚本 。例如 main.py:
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import osimport timeimport unittestfrom AutomatedTestModel.ModularDriverModel.utils.HwTestReport import htmlTestReportclass Main:def get_all_case(self):current_path = os.path.abspath(os.path.dirname(__file__))case_path = current_path + '/../case/'discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")print(discover)return discoverdef set_report(self, all_case, report_path=None):if report_path is None:current_path = os.path.abspath(os.path.dirname(__file__))report_path = current_path + '/../../report/'else:report_path = report_path# 获取当前时间now = time.strftime('%Y{y}%m{m}%d{d}%H{h}%M{M}%S{s}').format(y="年", m="月", d="日", h="时", M="分", s="秒")# 标题title = u"搜索测试"# 设置报告存放路径和命名report_abspath = os.path.join(report_path, title + now + ".html")# 测试报告写入with open(report_abspath, 'wb') as report:runner = HTMLTestReport(stream=report,verbosity=2,images=True,title=title,tester='Meng')runner.run(all_case)def run_case(self, report_path=None):all_case = self.get_all_case()self.set_report(all_case, report_path)if __name__ == '__main__':Main().run_case()
utils 存放公共方法 。例如导出报告样式、读取配置文件等 。
推荐阅读
- 图灵测试已死!ChatGPT通过人类考试也不算,超强AI评估新秀「逻辑谜题」
- Java 单元测试及常用语句
- 你是否知道如何使用Python Matplotlib创建令人惊叹的数据可视化?
- Python爬虫如何快速入门学习?
- Python处理Excel文件并打包EXE可执行文件
- Python可复用函数的六种最佳实践
- 手把手将Visual Studio Code变成Python开发神器
- 将 Pandas 换为交互式表格的 Python 库
- Django和Flask:Python Web开发的不同选择
- Python之父加入3年,微软终于对Python下手:直接放进Excel!