• [E2E Test] Python Behave Selenium 一文学会自动化测试


    前言

    本文将使用Python Behave与Selenium,和同学们一起认识自动化测试,并附上完整的实践教程。

    项目源码已上传:CSDN 郭麻花 Azure Repo python-behave-selenium

    核心概念 

    1. 什么是E2E Test

    E2E即End-to-end,意思是从头到尾的系统功能测试。它通过编写自动化测试脚本,完全从用户的角度出发,验证系统功能的正确性。

    如下图所示,E2E Test相较于Unit Test等等,实现起来需要更多的时间和成本。

    2. Python Behave 

    Behave是一个强大且开源的Python BDD测试框架,完全支持Gherkin(Feature测试语言)。与我前面介绍过的.NET Specflow测试框架相似,旨在通过自然语言编写测试用例并实现自动化测试。

    3. Selenium

    Webdriver是一种与实现无关的浏览器协议,每个浏览器都将提供自己的驱动程序,作为WebDriver协议的实现。而外部则可以通过驱动程序提供的接口,来实现自动化操作浏览器。

    Selenium 框架通过整合Webdriver实现, 允许用户可以无差别的使用不同的浏览器后端, 实现跨浏览器和跨平台自动化。并且Selenium框架支持Java,Python,C#等多种语言实现。

    E2E Test 实践指南

    1. 你是否需要E2E Test

    自动化测试需要整个团队投入大量的精力。开发人员熟悉每个页面实现,他们需要协助测试人员抓取页面元素,实现某些步骤等;而测试人员则需要与产品等需求方共同编写大量的,基于用户视角的测试用例,并与开发人员一同实现自动化测试步骤。

    并且,E2E Test需要干净的测试环境,至少不能影响每次测试用例的执行。这要求我们的软件系统必须具备快速部署,复制的能力。

    基于云原生架构的系统是最好的:[GitOps]微服务版本控制:使用ArgoCD 部署Grafana Loki_郭麻花的博客

    2.  什么时候需要自动化测试

    在产品趋于完善的时候,可以开始E2E Test。在项目早期阶段,推荐使用Unit Test,Integration Test,System Test等来保证软件质量。

    E2E Test并不是万能的,也不是要求所有的步骤都必须按照用户角度自动化完成:不鼓励的行为 | Selenium

    Python Behave与Selenium

    好了,介绍完E2E Test的概念与场景之后,我们来看一下E2E Test的实现过程。环境准备:Python,pip命令;安装behave与selenium。

    Behave

    BDD测试的概念我这里不再赘述,了解过.NET Specflow BDD Framework - CSDN 郭麻花的博客的朋友会很容易学习Behave框架。

    Behave的使用非常简单,我这里介绍下要点:

    1. 首先你需要熟悉feature语言: Gherkinstep实现,不懂看这里blog.py - Repos (azure.com)

    2. 结合上面链接里的代码,可以看到Behave中的context表示一个贯穿整个测试过程的对象,你可以将步骤中得到的对象或者变量,放入context中,并传递给后面的step。

    3. Behave提供了一些Hook函数,如before_feature,after_scenario()等,我们可以通过重写这些Hook方法,在scenario或者feature执行前后,做一些准备或者收尾的工作。Hook函数的使用请看这里:environment.py - Repos (azure.com)

    更多Hook函数看这里:Context Attributes — behave documentation

     4. Tag以及Tag的使用看这里:Tag in feature & Tag in running

    Selenium

    Selenium的使用也是非常简单。同样的,我概括下要点:

    • Selenium支持Edge,chrome,firefox,ie,Safari 等多种浏览器。
    • Selenium支持XPATH, CSS Selector,Id等多种方式查找元素。selectors-example
    • Selenium提供点击,输入,清除,提交和选择,5种基础操作控制页面元素。
    • Selenium可以等待元素达到期望状态。

    最重要的是代码设计。例如,我们需要等待页面某个按钮enable,或者等待某段文字刷新出来,这里一定不要使用sleep的方式来等待,而要用Wait element state in selenium

    的方式来实现优雅等待,一旦元素达到期望状态,程序会立刻往下执行。

    执行Behave测试

    可以通过VS Code进行调试behave 测试用例,像我这样:launch.json - Repos (azure.com)

    或者直接使用behave命令来运行: behave test\features\blog_test01.feature

    我这里为大家实现了一个简单的feature:通过百度查找“CSDN 郭麻花”,并判断他置顶的博客数量是否为“3”。

    欢迎大家下载调试:python-behave-selenium - Repos (azure.com)

    1. @fixture.edge
    2. Feature: Blog test 01
    3. Scenario: I have three pinned blogs
    4. Given I open "www.baidu.com"
    5. When I search "CSDN 郭麻花"
    6. Then I click the first of results
    7. When I select the "文章" selection
    8. Then I can see "3" blogs have been pinned

    总结

    好的,关于E2E Test以及Python Behave与Selenium的介绍暂时就到这里。

  • 相关阅读:
    多线程的几种创建方式以及手写@Async异步注解
    精度误差问题与eps
    一键登录技术预研
    【一篇就够】CSS隐藏页面元素方式
    【RocketMQ】RocketMQ快速入门
    古人的名与字、号、讳、谥有什么区别
    LeetCode每日一题(双指针)
    计算机三级信息安全笔记(知识点)
    【38. 最长上升子序列】
    【PowerQuery】PowerBI Pro账户的自动刷新
  • 原文地址:https://blog.csdn.net/qq_40404477/article/details/132654390