• 0
  • 0
分享

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

1-1.png

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

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

  设计与封装

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

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

1-2.png

  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自己换个名字包一层,这和红芯浏览器有什么区别?

1-3.png

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


作者:虫师    

来源:http://www.51testing.com/html/71/n-7798471.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 又是一条让人看不懂的新闻。8月18日,网红奶茶茶颜悦色在南京开业,一大早还没开门店铺外就排起长队。开业大约半小时左右,就因人流量过大造成拥堵,不得不暂停营业。因为生意过于火爆而关门已经足够匪夷所思了。而在部分交易平台上,可以看到该奶茶代购代排服务,代购一杯奶茶的价格最高达200元。换句话说,光代购费就是奶茶本身价格的10倍了。什么样的奶茶有这样的吸引力?此情此景,让人不禁问一句:“它会魔法吧?”2022年8月18日,南京,茶颜悦色新街口门前,消费者在观看暂时闭店公告。作为一个喝了多年奶茶的人,我仍然表示不能理解这种狂热。价格炒到这个高度,这一杯奶茶早已不是奶茶本身了。这个时候,谈论这杯奶茶有多...
            0 0 1557
            分享
          • 关于HTTP协议,我考虑了一下觉得没必要再花一节内容来介绍,因为网上关于HTTP协议的介绍非常详细。本着以尽量避免介绍一空洞了概念与理论来介绍接口测试,我这里仍然会给出具体实例。在此之前先简单的介绍一下基本概念:我们想要打开一个网站,首先是需要往浏览器的地址的URL输入框架中输入网地址。当我敲下回车后,通过HTTP协议,将网址传送到域名解析服务器,域名解析服务器根据网址找到对应的IP主机(系统服务器)。这个过程叫request,即请求;当IP主机拿到请求后,将相应的资源返回给用户浏览器。这个过程叫response,即响应。当用户浏览器向系统服务器请求时,有几种方法,最常用的就是GET和POST...
            0 0 1669
            分享
          •        是不是憧憬过黑客,说真的,刚工作那几年有过,现在也只是佩服下人家做的具体事情,像ios越狱、破解某专业软件、高水平的0day等,羡慕已经谈不上了,因为有了一点工作经验,知道自己与黑客大牛之间的技术差距,看过一个黑客入门的技能树,已经心有余而力不足了,而且现实生活里所了解的黑客技术和电影中戏剧化手法呈现的黑客手段,往往是天差地别,想象中的黑客,像弹钢琴一样敲击着键盘,屏幕上满是飞速刷屏的命令行界面,进度条一满,机密数据下载完成,接管某高防御系统的管理权限,或是控制了几十辆汽车横冲直撞,我不知道在现实中是不是真有这样的情景,就算有那也是台上1分...
            3 6 4309
            分享
          •   1、引言  在撸码过程中,99.1%的大佬,都不敢说自己的撸出来的代码,是不需要debug的。换句话说,码农在撸码过程中,最痛苦的,莫过于撸出来的代码,为了能避坑,小鱼也是在撸码过程中,总结的一点避坑方法,请各位大佬笑纳。  2、避坑内容总结  2.1无法定位到元素  遇到问题:  找不到元素,脚本报“NoSuchElementException:Unable to find element”,或"定位到了,不能操作,点击无效。  解决方法:  1)查看自己的“属性值”是否写正确  2)元素的标签不唯一,默认找到第一个  3)向上查看,元素是否在frame或iframe框架中  ...
            0 0 1290
            分享
          •   写这篇文章的初衷是因为最近项目中涉及到较多支付模块,于是打算从这篇文章开始,陆续整理一下支付宝和微信的支付模块。每篇文末会给出最新整理的支付demo,会随着文章进度不断更新,一方面是自己的总结过程,另一方面希望能帮助到更多像我这种小白的程序汪。其实支付宝的官方文档和demo也很详细,本文只是做简要总结。一、Wap支付产品介绍  这篇文章我们先来介绍一下支付宝Wap支付(也叫作手机网站支付),手机网站支付功能适用于商家在移动端网页应用中集成支付宝支付功能。 商家在网页中调用支付宝提供的网页支付接口调起支付宝客户端内的支付模块,商家网页会跳转到支付宝中完成支付,支付完后跳回到商家网页内,最后展...
            0 0 8153
            分享
      • 51testing软件测试圈微信