Selenium+pytest+数据驱动,做好自动化测试

韩韩韩韩兵·2021-05-21 15:29
顾老师新书《全栈软件测试工程师宝典》https://item.m.jd.com/product/100234

编者按:本文来自微信公众号“软件测试培训”(ID:iTestTrain),作者:顾翔,36氪经授权发布。

顾老师新书《全栈软件测试工程师宝典》

https://item.m.jd.com/product/10023427978355.html

以前两本书的网上购买地址:

《软件测试技术实战设计、工具及管理》:

https://item.jd.com/34295655089.html

《基于Django的电子商务网站》:

https://item.jd.com/12082665.html

来源:http://www.51testing.com

主流自动化框架

seleniumweb端自动化框架,(行业里面最核心的框架)appium:手机app端框架。

  requests:接口测试

selenium工具类封装

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

  创建常用工具

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

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

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

from time import sleepclass WebKeys:def __init__(self):self.driver = webdriver.Chrome()# 访问urldef 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 pytestfrom 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库。

  利用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.comname: xpathvalue: //*[@id="kw"]txt: 狗狗币-url: http://www.baidu.comname: xpathvalue: //*[@id="kw"]txt: 火币-url: http://www.baidu.comname: xpathvalue: //*[@id="kw"]txt: 比特币-url: http://www.baidu.comname: xpathvalue: //*[@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函数里面有很多参数,方便我们根据自己的需要去调用。

顾老师专注企业内训和线下公开课,有兴趣者加顾老师微信xianggu0625

——————————————————————————————————

顾老师课程欢迎报名

软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

+1
0

好文章,需要你的鼓励

参与评论
评论千万条,友善第一条
后参与讨论
提交评论0/1000

下一篇

性能测试的步骤跟自动化、功能测试的步骤不一样,比如说前期的准备(了解系统,环境搭建),后期的压力测试(7*24h)等等。

2021-05-21

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

推送和解读前沿、有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚焦全球优秀创业者,项目融资率接近97%,领跑行业