• 12
  • 12
分享

主流自动化框架

selenium :web端自动化框架  ,(行业里面最核心的框架)

appium   :手机app端框架

requests :接口测试

selenium 工具类封装

selenium提供了很多方法供我们去完成网页元素的操作, 在实际开发中,我们的变量只有元素定位 和对元素的操作,其他的都是重复的,为了减少代码量,我们需要将selenium进行二次封装,这就是工具类。工具类就是我们的工具箱,里面的方法就是我们的工具

创建常用工具

创建一个模块,在项目文件夹下面创建一个模组 new ->Python Package

1.jpg

系统会生成一个带init文件的python 框架文件夹

2.jpg

from time import sleep
class WebKeys:
    def __init__(self):
        self.driver = webdriver.Chrome()
    # 访问url
    def open(self, url):
        self.driver.get(url)
    # 退出
    def quit(self):
        self.driver.quit()
    # 元素定位
    def locator(self, name, value):
        return self.driver.find_element(name, value)
    # 输入框功能
    def input(self, name, value, txt):
        el = self.locator(name, value)
        el.clear()
        el.send_keys(txt)`

pytest 编写测试用例并进行测试

导入pytest框架

pytest框架集成了众多方法方便我们对测试用例进行测试,高效,易用,可以节省大量工作

pytest的测试用例必须以test命名  文件如下

import pytest
from time import *
from data_driver import yaml_driver
@pytest.mark.parametrize('data', yaml_driver.load_yaml('../data/baidu.yaml'))
def test_login(data):
    wk = WebKeys()
    wk.open(data['url'])
    wk.input(data["name"], data["value"], data["txt"])
    sleep(3)
    wk.quit()
if __name__ == '__main__':
    pytest.main()

数据驱动

当我们的测试用例很多的时候我们需要写很多次用例,利用数据化驱动,就可以节省很多时间

公司常用的有yaml库

1,利用pip导入yaml

同样的我们要对这个yaml模块进行二次封装,方便我们调用

def load_yaml(path):
    file = open(path, 'r', encoding='utf-8')
    data = yaml.load(file, Loader=yaml.FullLoader)
    return data

新建一个文件夹用来专门放测试用例数据

新建一个yaml文件然后按正确格式将数据放到里面

-
  url: http://www.baidu.com
  name: xpath
  value: //*[@id="kw"]
  txt: 狗狗币
-
  url: http://www.baidu.com
  name: xpath
  value: //*[@id="kw"]
  txt: 火币
-
  url: http://www.baidu.com
  name: xpath
  value: //*[@id="kw"]
  txt: 比特币
-
  url: http://www.baidu.com
  name: xpath
  value: //*[@id="kw"]
  txt: 以太坊

注意这个 - 以及后面url必须在-右下方,否则系统会报文件对齐错误

在测试用例代码里面有这样一行代码,这其实就是调用我们封装的yaml类,并返回一个变量列表data变量

@pytest.mark.parametrize('data', yaml_driver.load_yaml('../data/baidu.yaml'))

../表示跳到父目录,然后在通过路径找到yaml文件

在测试用例里面我们只需要给一个方法指定这个data变量,方法就会被执行四次

相当于写了四个用例

if __name__ == '__main__':
    pytest.main()

这个pytest.main函数里面有很多参数,方便我们根据自己的需要去调用,


作者:枫之语_

原文链接:https://juejin.cn/post/6961347284185382948

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • JMeter分布式执行原理如下图所示:前提:在调度机上安装JDK(我们这里使用1.8版本的)+Jmeter(3.3)一、windows下负载机的配置(执行机)1、在执行机上安装相同版本的JDk和Jmeter(参考调度机的安装)注意:JDK和Jmeter都要配置环境变量Jmeter环境变量的配置:在系统环境变量中添加:JMETER_HOMEC:\jmeter\apache-jmeter-3.3\bin在path系统变量中添加如下配置:%JMETER_HOME%\bin;2、在执行机上自定义端口号1、进入Jmeter的bin目录,找到Jmeter.properties文件,打开该文件修改如下两个配...
            12 12 1770
            分享
          • 新浪科技讯北京时间10月24日早间消息,据报道,美国苹果旗舰店已经开始销售能用Apple Watch或iPhone解锁的外门锁。这款售价329美元的Level Lock+门锁是苹果旗舰店销售的首款支持Home Key的门锁。Level Lock+由Level Home公司出品。在大门上安装这款产品后,用户只需使用苹果Home Key功能轻触便可打开或关闭门锁。Home Key是一款使用NFC和苹果软件中的安全令牌实现开锁和解锁的功能。用户可以通过短信把钥匙发送给朋友,也可以直接通过苹果设备自动开门。对苹果来说,这是2021年宣布的一项备受期待的功能取得的重要进展。Home Key表明苹果仍在推...
            0 0 808
            分享
          •   春节档的相关热门话题仍在继续,只不过影迷已经从各影片内容方面的争论,拓展到了对周边衍生品的关注上。  舆论关注度最高的是科幻大片《流浪地球2》的周边产品。外骨骼装甲、行星发动机、门框机器人、机械合金旋挖钻机模型、机械小狗笨笨……关于春节档大片的周边产品,在社交媒体、电商平台上轮番被讨论。  其中,阿里鱼旗下的娱乐电商平台“造点新货”,以众筹形式推出的《流浪地球2》的官方周边衍生品热度最高:截至1月29日14点,该平台有关《流浪地球2》的周边众筹金额累计超过8000万元,并且仍在不断地增长,打破中国文娱类众筹纪录。图源淘宝App  这源于这届影迷对春节档影片的热情。今年属于疫情防控放开后第一...
            0 0 1022
            分享
          • 引言对于产品的手机项目(应用软件),主要是进行系统测试。而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能模块测试、兼容性测试、安装和卸载测试、软件更新测试、性能测试、用户体验性测试、交叉事件测试、用户界面测试等。功能测试要点及常见缺陷常见的功能类缺陷APP崩溃这是测试中的常见问题,这类问题也是非常严重的,会直接影响用户对产品的第一印象,例如我们正在使用某个APP,正在使用突然应用就停止响应,界面上弹出“强制关闭错误”的窗口,需要强制关闭应用,或者正在使用时出现闪退的现象。这些情况都很影响用户的体验,导致用户卸载该APP。通用的触发移动APP崩溃的测试场景,如下:验证在有不同...
            13 14 1888
            分享
          •        1、VisualStuio中的测试资源管理器、CodeLens和ReSharper       这篇文章实践使用VisualStudio 2019进行单元测试。在VisualStudio中通常都会使用“测试资源管理器”进行单元测试。       Professional和Enterprise版本可以使用CodeLens,这大大方便了测试的运行与调试。       但CodeLens的图标常常刷不出来,一些第三方插件(如Re...
            1 1 2646
            分享
      • 51testing软件测试圈微信