Python自动化测试的五种模型


Python自动化测试的五种模型

文章插图
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、模块化驱动模型将脚本中重复可复用的部分拿出来写成一个公共的模块 , 需要的时候就调用它 , 这样可以大幅提高测试人员编写脚本的效率 。
框架目录:
Python自动化测试的五种模型

文章插图
config 存放配置文件 。
例如 base_data.json 文件 , 存放测试地址 。
{"url": "https://www.baidu.com/"}data 存放测试数据 。
drivers 存放浏览器驱动文件 。
Python自动化测试的五种模型

文章插图
report 存放执行完成后的测试报告 。
test 存放测试用例 。
Python自动化测试的五种模型

文章插图
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 存放公共方法 。
例如导出报告样式、读取配置文件等 。
Python自动化测试的五种模型


推荐阅读