• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • web兼容性概述定义:软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息。随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越来越重要。软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互。平台的兼容性:硬件平台:pc手机pad等,操作系统:AndroidiOSWindowsmaclinux。浏览器:谷歌浏览器火狐浏览器IE浏览器等。web兼容性测试:以浏览器兼容性为主,操作系统和分辨率为辅。明确需求:根据用户需求去找浏览器,市场占有率的浏览器(浏览器最近的三个版本)操作系统:安装虚拟机。浏览器市场占有率浏览器内核阵营操...
            0 0 935
            分享
          •   国外科技媒体 Six Colors 报道,苹果 macOS 提醒和警告严重影响 Mac 设备迁移升级体验。  该媒体主编杰森?斯内尔(Jason Snell)在评测苹果 M3 iMac 和 M3 MacBook Pro 过程中,在迁移数据方面遇到了一些问题。  他表示在迁移完成之后首次重新开机 Mac 之后,出现了大量的安全警报,IT之家在此附上该媒体截图如下:  迁移助理已经迁移了我的所有应用程序,并自动启动了登录项中列出的任何应用程序或设置为在后台自动启动的应用程序。  迁移完成之后这些应用都会同时启动,并向用户发出通知提醒,告知或者提示用户这些应用的执行权限。  这些提醒和通知彼此重...
            0 0 1188
            分享
          • 前言现在很多公司写后端代码和前端代码已经分工很明确了,前后端把接口定义好,然后各自写各自的代码就可以了。那么对于服务端的开发人员来说,写好了代码后,对外提供了API,这时候没有页面可以调用调试,如果等着客户端写完代码再测试的话,那样工作的效率是及其低下的。那么服务端要学会模拟客户端的调用,来调试自己的代码,提早发现问题,这样后续跟客户端进行联调的时候,就大大提高了效率。我们今天讲讲Postman模拟客户端调试工具,这是我平时工作中最常用的工具之一。Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。它只要在Chrome里安装一个插件即可完成强大的功能。但是由于201...
            0 0 1039
            分享
          • 如何正确编写单元测试?国内的大多数互联网公司只注重软件功能,却往往忽略了极为重要的软件质量,在一个月以前,我认为遵循了代码规范(阿里规约、sonar)的软件系统已经算是一个质量比较好的软件系统了,但是在我了解单元测试以后,才发现自己以前的想法有多么愚蠢,单元测试的作用远比我想象的要重要许多。经过一段时间的研究,总算对单元测试有了一个大概的了解,然而网上的文章零零散散,大多是讲解一些比较简单的demo,参考价值比较有限,因此我决定写一篇关于单元测试的文章来总结自己这段时间的收获与心得。背景软件系统刚开发完成时几乎不会出现Bug。为什么呢?因为刚开发第一版软件系统时,需求并不复杂,场景也不是很多,...
            9 9 912
            分享
          •   最近火出圈的 ChatGPT 公司 OpenAI 发布了 Chat API 和 gpt-3.5-turbo 模型,我们现在可以通过API 来使用与 ChatGPT 一样的 NLP 模型。  使用OpenAI API,可以使用gpt-3.5-turbo构建自己的应用程序,可执行以下任务:  草拟电子邮件或其他文字内容写代码,例如Python代码  创建对话代理,回答各类问题  为您的软件提供自然语言界面  在各种学科中进行辅导  翻译语言  为视频游戏模拟角色等  待发掘的各种应用场景……  下面用 Python 来讲解如何使用 openai python SDK 实现自...
            0 0 2510
            分享
      • 51testing软件测试圈微信