[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

  1. 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)

复制代码
@fixture.edge
Feature: Blog test 01

  Scenario: I have three pinned blogs
    Given I open "www.baidu.com"
    When I search "CSDN 郭麻花" 
    Then I click the first of results
    When I select the "文章" selection
    Then I can see "3" blogs have been pinned

总结

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

相关推荐
chao_78942 分钟前
更灵活方便的初始化、清除方法——fixture【pytest】
服务器·自动化测试·python·pytest
慧都小项1 天前
降本增效!自动化UI测试平台TestComplete并行测试亮点
自动化测试·ci/cd·跨平台·ui测试·回归测试·并行测试·环境兼容
张较瘦_2 天前
[论文阅读] 人工智能 + 软件工程 | 开源软件中的GenAI自白:开发者如何用、项目如何管、代码质量受何影响?
论文阅读·人工智能·软件工程
张较瘦_2 天前
[论文阅读] 人工智能 + 软件工程 | 用交互式可视化革新软件文档:Helveg工具的设计与改进
人工智能·软件工程
chao_7892 天前
pytest 实战演练【pytest】
自动化测试·单元测试·自动化·pytest
测试老哥2 天前
Jmeter+ant+jenkins接口自动化测试框架
自动化测试·软件测试·python·测试工具·jmeter·jenkins·压力测试
格鸰爱童话3 天前
python+selenium UI自动化初探
python·selenium·自动化
杨小扩3 天前
AI驱动的软件工程(下):AI辅助的质检与交付
人工智能·软件工程
autobaba3 天前
编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
chrome·python·selenium·rpa
workflower4 天前
ISO-IEC-IEEE 42010架构规范
开发语言·架构·软件工程·软件需求·敏捷流程