浅谈自动化测试框架开发

在自动化测试项目中,为了实现更多功能,我们需要引入不同的 库、框架

浅谈自动化测试框架开发

首先,你需要将常用的这些库、框架都装上。

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()
    # ...

设计与封装

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

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

浅谈自动化测试框架开发
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自己换个名字包一层,这和 红芯浏览器有什么区别?

浅谈自动化测试框架开发

假设我们开发的自动化测试框架叫 xtest

首先,需要安装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框架的所需要知识更多,实现一个机器学习框架就更难了,自动化测试框架是站在一堆人的肩膀上来实现,难度系数要低很多。

Original: https://www.cnblogs.com/fnng/p/15077557.html
Author: 虫师
Title: 浅谈自动化测试框架开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/549274/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 数学基础之概率

    本文主要介绍概率与数理统计中的一些常见的基本概念。 对于随机试验,尽管在每次试验之前不能预知试验的结果,但是试验的所有可能结果集合是已知的,我们将随机试验E的所有可能的结果组成的集…

    技术杂谈 2023年5月31日
    082
  • LVM讲解及磁盘挂载故障

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,使硬盘不必使用分区也能被简单地重新划分大小。首先我们先…

    技术杂谈 2023年7月24日
    058
  • 代码进行抄袭检查

    代码抄袭:那些让985学生沉默,211学生流泪的真相 – 知乎 https://zhuanlan.zhihu.com/p/40568346 Original: http…

    技术杂谈 2023年5月31日
    088
  • kubernetes调度

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月24日
    075
  • 大疆Mavic_2无人机说明书

    https://www.bilibili.com/read/cv10407489/ https://max.book118.com/html/2021/0408/807213510…

    技术杂谈 2023年5月31日
    081
  • SpringMVC

    SpringMVC 注解收集: -@component 组件 -@service service -@controller contro1ler /*代表这个类会被Spring接管…

    技术杂谈 2023年6月21日
    080
  • 超过固定宽度(或行数)显示…(或省略)

    作为前端经常遇到的一个需求。对于一些比较长的文本做限制,不显示,或者显示省略号。今天特意整理了一下,做个备忘。css实现单行、多行文本超出显示省略号 1.超出固定长度显示&#823…

    技术杂谈 2023年5月31日
    099
  • kaldi 在线识别

    测试环境:Ubuntu16.04 建议:仔细地按照此教程来,有些人中间出错是因为没仔细按照教程的步骤和细节 文档更新时间:20180713 使用thchs30训练最后的识别准确率约…

    技术杂谈 2023年5月30日
    084
  • php-fpm.conf 重要参数 max_children 和 request_terminate_timeout(转)

    php-fpm.conf有两个至关重要的参数:一个是”max_children”,另一个是”request_terminate_timeout&…

    技术杂谈 2023年5月31日
    0101
  • python+cv2实现自动gamma校正

    Gamma变换是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: Gamma变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像…

    技术杂谈 2023年6月21日
    080
  • 20212218林思凡《Python程序设计》实验四Python综合实验实验报告

    课程:《Python程序设计》班级: 2122姓名: 林思凡学号:20212218实验教师:王志强实验日期:2022年5月27日必修/选修: 公选课 一、实验要求 Python综合…

    技术杂谈 2023年7月24日
    0107
  • 快速应用程序开发

    什么是 RAD ? 快速应用程序开发(RAD)是一种专注于设计和原型设计阶段的开发方法,目的是获得用户的即时反馈。与先进行初始计划再进一步执行的传统开发模型不同,RAD 有着更多的…

    技术杂谈 2023年6月21日
    0109
  • 各种锁

    只作一个浅显的解释作为区分,具体深入还请搜索相关博客。 可重入锁(又叫递归锁) synchronized(隐式&a…

    技术杂谈 2023年7月25日
    094
  • 2022.27 AI架构师

    在经历了理论研究、数据驱动的阶段后,AI进入了产业落地应用阶段,亟需的是从技术到业务的融合,而不仅是技术本身的迭代 ,在这个过程中,AI架构师是最稀缺的。 从字面拆解”…

    技术杂谈 2023年5月30日
    090
  • 一致性检验评价方法kappa

    最近在做眼底图像的无监督分类,使用的数据集辣子kaggle的Diabetic Retinopathy,简称DR,中文称糖尿病型眼底疾病。 最后的评估方法是二次加权kappa。以前没…

    技术杂谈 2023年7月25日
    0105
  • Word书签替换,加盖电子印章及转换PDF(Java实用版)

    一、前言 在项目中有需要对word进行操作的,可以看看哈,本次使用比较强大的spire组件来对word进行操作,免费版支持三页哦,对于不止三页的word文件,可以购买收费版,官网:…

    技术杂谈 2023年6月21日
    0119
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球