浅谈自动化测试框架开发

在自动化测试项目中,为了实现更多功能,咱们须要引入不一样的库、框架html

首先,你须要将经常使用的这些库、框架都装上。web

pip install requests
pip install selenium
pip install appium
pip install pytest
pip install pytest-rerunfailures
pip install allure-pytest
...

而后,在项目中使用他们。浏览器

import pytest
import yagmail
from selenium import webdriver


class MyTest:

    def setup(self):
        self.browser = webdriver.Chrome()

    def test_case(self):
        browser.find_element_by_id("user").send_keys("admin")
        browser.find_element_by_id("pawd").send_keys("admin123")
        # ...
        page.close()


if __name__ == "__main__":
    pytest.main(["-s", "-v", "./test_case.py",
        "--html", "./test_report.html",
        "--reruns", "3"
    ])
    yagmail.SMTP()
    # ...

设计与封装

例如上面的自动化项目代码,咱们写多了以后,就会发现经常使用的库就是那么几个,并且用法大同小异,俗称样板代码。app

这个时候你就能够考虑去作一些封装,而后把那些经常使用的功能封装成了一堆公共方法,在你的项目代码中调用,这样能够更快速的完成开发任务,而且便于应对需求的变化。框架

import pytest
from common import mail
from test_data import TestData
from page import LoginPage


class MyTest:

    def test_case(self, browser):
        page = LoginPage(browser)
        page.username.send_keys(TestData.admin)
        page.passowrd.send_keys(TestData.admin_pawd)
        # ...
        page.close()


if __name__ == "__main__":
    pytest.main(["-s", "-v", "./test_case.py",
        "--html", "./test_report.html",
        "--reruns", "3"
    ])
    mail.SMTP()
    # ...

自动化测试框架

自动化测试框架和你在项目中封装的公共模块有着一些不一样。机器学习

  • 它实现的功能更通用:例如,你能够在项目中封装一个登陆的公共模块,用于因此用例的登陆,但不能在框架里面封装一个登陆,由于,大家的项目登陆是用帐号密码,别人家用的是手机号+验证码,你封装的登陆脱离了你的项目就不可用了,显然不该该放到框架里。学习

  • 它应该是和项目分离:由于它要给更多的人使用,而且不能轻易被修改,所以,它应该是独立安装的,不该该和项目代码混到一块儿。若是一个框架被使用者轻易的改来改去。请问,如何升级?使用者想体验新的版本怎么办?测试

  • 它应该有一些设计创新:我可不能够把selenium的get()方法改个名字叫open()封装到本身的框架里。固然能够,若是整个框架都是在把别人的API本身换个名字包一层,这和红芯浏览器有什么区别?设计

假设咱们开发的自动化测试框架叫xtestcode

首先,须要安装xtest。

pip install xtest

使用xtest编写测试用例。

import xtest
from xtest import TestData
from page import LoginPage


class MyTest:

    def test_case(self, browser):
        page = LoginPage()
        page.username.send_keys(TestData.user)
        page.passowrd.send_keys(TestData.pawd)
        # ...

if __name__ == "__main__":
    xtest.main(mail=True)

它应该以更简单的方式实现更强大的功能。固然,不一样类型的框架,难易程度也是不一样的,实现一个web框架的所须要知识更多,实现一个机器学习框架就更难了,自动化测试框架是站在一堆人的肩膀上来实现,难度系数要低不少。

相关文章
相关标签/搜索