基于python语言的selenium自动化测试(2)-测试代码与脚本代码分离
来源:互联网 发布:英国一年制硕士知乎 编辑:程序博客网 时间:2024/04/28 14:00
上一篇介绍了如何搭建selenium环境,也给出了一小段代码演示如何使用selenium
博客不会过多的介绍如何使用selenium api 更多地在于如何构建一个自动化测试项目,
代码的分层是很关键一步,本文介绍如何使用pytest+selenium的框架做到测试代码与脚本代码的分离
pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:
1、简单灵活,容易上手; 2、支持参数化;
3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
5、测试用例的skip和xfail处理;
6、可以很好的和jenkins集成;
1、pytest安装
pip install -U pytest
2、pytest运行代码脚本
if __name__ == '__main__': pytest.main("-q test_xxx.py")
3、pytest的fixtures
setup_class/teardown_class 在当前测试类的开始与结束执行。setup/treadown 在每个测试方法开始与结束执行。setup_method/teardown_method 在每个测试方法开始与结束执行,与setup/treadown级别相同。
copy一段下午写的代码
test_youdanweb.py:
#coding=utf-8import pytestfrom youdanweb import YoudanWebyoudan = YoudanWeb()class Testlogin: def setup_class(self): youdan.initialize() def teardown_class(self): youdan.quit() def test_loginfail(self): assert u'佣金' in youdan.login('15914145610','456789') def test_loginpass(self): assert u'佣金' in youdan.login('15914145610','123456')if __name__ == '__main__': pytest.main("-q test_youdanweb.py")
youdanweb.py:
#usr/bin/python#coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport osimport timeclass YoudanWeb(): def initialize(self): chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" os.environ["webdriver.chrome.driver"] = chromedriver self.driver = webdriver.Chrome(chromedriver) self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url ="https://m.youdan.me" def youdanSearch(self,keywords): driver = self.driver driver.get(self.base_url +"/") time.sleep(2) driver.find_element_by_xpath(".//a[@class='sprite search-ico txt-over']").click() input = driver.find_element_by_id('filterValue') input.send_keys(keywords) time.sleep(2) input.send_keys(Keys.ENTER) return driver.page_source def login(self,user,pwd): driver = self.driver driver.get(self.base_url +"/") driver.find_element_by_xpath(".//a[@class='nav-ico']").click() time.sleep(1) driver.find_element_by_xpath(".//a[@class='blue-btn']").click() time.sleep(2) driver.find_element_by_id('mobile').send_keys(user) driver.find_element_by_id('password').send_keys(pwd) time.sleep(1) driver.find_element_by_id("next").click() time.sleep(1) return driver.page_source def quit(self): self.driver.quit() def save_screenshot(self,name): self.driver.save_screenshot('%s.png'%name)
0 0
- 基于python语言的selenium自动化测试(2)-测试代码与脚本代码分离
- 基于selenium的自动化测试脚本编写-python
- 初学者的Selenium自动化测试指南,基于Python(二)——自动化测试脚本小程序
- python-day0003-搭建基于python的selenium自动化测试---第一个简单的测试脚本
- 基于Python+selenium的自动化测试基础
- selenium-python-unittest自动化测试框架(数据和代码完全分离)
- 基于python语言的selenium自动化测试(1)-环境搭建
- 基于selenium与VSTS的Web自动化测试(初级)
- python 自动化测试脚本-->selenium应用
- selenium+python自动化测试(2)
- python 运行selenium的测试代码mark
- 基于Selenium的Python Web应用自动化测试入门
- 基于python的selenium自动化测试环境搭建
- 在Windows搭建基于selenium+python的自动化测试环境
- 用python做自动化测试--web 自动化测试(2)-Selenium 3.x启动IE, Firefox,Chrome代码示例
- 基于TestNG 与Selenium 的自动化测试设计与实施
- 基于TestNG与Selenium 的自动化测试设计与实施
- 基于TestNG 与Selenium 的自动化测试设计与实施
- 如何用jmeter多并发性测试登录,用cvs文件记录用户名,密码
- fork/join用法
- Leetcode在线编程sort-list
- mongodb find条件选择器 常用语句
- 常用Kafka命令实现
- 基于python语言的selenium自动化测试(2)-测试代码与脚本代码分离
- ACM模运算
- Fence Repair(哈弗曼树)
- Linux如何查看JDK的安装路径
- RxJava 2.0 使用详解
- 考试啊考试
- 在py-faster-rcnn/lib下make报错 EnvironmentError: The CUDA lib64 path could not be located in /usr/lib64
- leetcode(82).349. Intersection of Two Arrays
- 学习笔记--Linux常用命令