设计思路
本文整顿演绎以往的工作中用到的货色,现汇总成根底测试框架提供分享。
框架采纳 python3 + selenium3 + PO + yaml + ddt + unittest 等技术编写成根底测试框架,能适应日常测试工作须要。
1、应用 Page Object 模式将页面定位和业务操作离开,拆散测试对象(元素对象)和测试脚本(用例脚本),一个页面建一个对象类,进步用例的可维护性;
2、应用 yaml 治理页面控件元素数据和测试用例数据。例如元素 ID 等发生变化时,不须要去批改测试代码,只须要在对应的页面元素 yaml 文件中批改即可;
3、分模块治理,互不影响,随时组装,即拿即用。
测试框架分层设计
把常见的操作和查找封装成根底类,不论是什么产品,可间接拿来复用
业务层次要是封装对象页面类,一个页面建一个类,业务层页面继承根底层
用例层针对产品页面性能进行结构摸拟执行测试
框架层提供根底组件,撑持整个流程执行及性能扩大,给用例层提供各页面的元素数据、用例测试数据,测试报告输入等
测试框架目录构造
如下思维导图目录构造介绍:
编写用例办法
login.yaml
例如,咱们要新增登录性能测试用例:
首先,只需在 testyaml 目录下新增一个页面对象 yaml 文件,参考 login.yaml 格局编写即可。这些文件是提供给封装页面对象类调用并执行定位辨认操作。
login_data.yaml
其次,在 testdata 目录下新增一个 login_data.yaml 文件提供给登录接口传参的测试数据,编写格局参考 login_data.yaml 文件。
loginPage.py
而后,在 page_obj 目录下新增一个 loginPage.py 文件,是用来封装登录页面对象类,执行登录测试流程操作。
login_sta.py
最初,在 testcase 目录下创立测试用例文件 login_sta.py,采纳 ddt 数据驱动读取 yaml 测试数据文件
综上所述,编写用例办法只须要按以上四个步骤创立 -> 编写即可。
执行如下主程序,可看输入的理论后果。
common
蕴含:根本的公共办法类,比方 HTML 报告、Log 解决、发送邮件、根本页面对象等
其中 pageObject 外面是对各个测试零碎操作页面的一个封装,当前用例的办法间接继承即可。可屡次调用,保护起来比拟不便。
conf
根本的零碎参数配置信息,能够蕴含 url, 正确用户的信息,简略日志级别,某些输入地位,邮件信息等
data
对于数据驱动或者其余测试用例中须要测试的数据,之后测试用例流程不变,能够间接在文档中进行 Axitrader 返佣 https://www.kaifx.cn/broker/a…。临时采纳 excel。也能够采纳 csv,xml 等等办法
log
日志输入,临时包含了 log 输入,htmlreport 输入以及 img 的保留。
test
其中蕴含 testcase 以及 testsuite 两个模块
testcase 负责编写测试用例如果某个性能有多个 py 文件编写能够再新建一个目录。
testsuite 就是测试套件,能够按需要进行抉择须要的测试项(蕴含测试用例以及测试类)
留神:应用 ddt 则不能够再应用 addTest 形式独自增加测试用例了。
(1)首先导入 webdriver 与 Keys 模块。selenium.webdriver 模块蕴含驱动浏览器的实现办法。反对 Firefox、Chrome、IE 浏览器。Keys 模块蕴含键盘中的键,诸如 F1,ALT 等。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
(2)接下来,创立 Chrome WebDriver 实例。
driver = webdriver.Chrome()
driver.get 办法会在浏览器中关上指定的 URL 页面。当页面齐全加载后(会触发“onload”事件),才会把控制权交给咱们写的测试脚本。
留神:如果如果加载的页面,应用了很多 AJAX 申请,那么 WebDriver 可能不晓得齐全加载的工夫点。
(3)而后是一个断言,测试网页题目(即 H5 中的 <title> 标签)中是否蕴含“Python”字符串:
assert ‘Python’ in driver.title
(4)WebDriver 提供了多种查找元素的办法,形如 应用 find_element_by_*。例如,这里应用了 find_element_by_name 办法通过其标签的 name 属性,来查找输入框元素。