基于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
原创粉丝点击