一文搞懂Python自动化测试框架

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一文搞懂Python自动化测试框架

一文搞懂Python自动化测试框架

如果你选用python做自动化测试,那么python测试框架的相关知识你必须要了解下。

首先我们先学习一下框架的基本知识。

什么是框架(百度百科)?

框架( Framwork )是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。它定义了整体结构,类和对象的分割,各部分的主要责任,类和对象怎么协作,以及控制流程。框架预定义了这些设计参数,以便于应用设计者或实现者能集中精力于应用本身的特定细节。

什么是自动化测试框架?

自动化测试框架是一个工具脚本集合,用于组织和管理自动化基础功能(打开浏览器、鼠标点击、登录等)自动化测试用例、提供测试结果统计报告。

自动化测试框架能够提供可靠的测试服务,对于新需求能够快速扩展,能够让测试工程师简单高效的完成自动化测试任务。

测试框架的优点如下
  1. 代码复用 ,将基础的测试代码封装,从而降低代码的复杂性。
  2. 提高维护效率,有效组织和管理测试脚本。
  3. 快速实现项目的自动化测试,不用从0开始,一般测试框架完成后,其他类似程序也可以快速复用。
  4. 输出各种美观易懂的测试报告。
一个典型的自动化测试框架目录

img

编辑切换为居中

典型自动化测试框架目录

  • config(配置文件目录):存放所有使用的配置文件,实现配置与代码分离。
  • common(公共函数):公共函数、方法以及通用操作的管理。
  • data(测试数据):将所有的用例参数化使用的文件放到这里,一般可采用xlsx、csv、xml等格式。实现数据与代码分离。
  • drivers(驱动目录):一般存放浏览器驱动,如如Chromedriver等。
  • logs(日志目录):日志记录和管理功能,存放运行时日志和错误日志error log等。
  • testcase(测试用例):测试用例管理功能,可以分模块编写,建相应的目录。
  • report(测试报告):管理和存放程序运行后生成的测试报告,一般可有html报告、excel报告等。

python主流测试框架

unittest

unittest框架是python内置的单元测试框架,unittest的设计灵感最初来源于Junit以及其他语言中具有共同特征的单元框架。它能编写组织用例、执行用例,还可输出测试报告等。

它具有如下优点:

  • 使用断言判断返回布尔值来判断期望值和实际值的差异。
  • 可以构建共同的初始化变量或实例。
  • 框架结构可以组织用例批量运行。

为了实现这些,unittest产生了以下几个概念:

  • test fixture: 一个test fixture 表示执行一个或多个测试前的准备工作,以及执行完成后清理工作。例如:创建临时或代理数据库或目录,或者是一个启动服务器进程。
  • test case: 一个test case是一个独立的测试单元,它检查特定输入是否响应特定的输出,unittest提供了一个基本类——TestCase,这个类用于创建一个或多个test case。
  • test suite: 一个test suite是test cases、或test suites、或者两者的一个集合,它用于把想执行tests放在一起。
  • test runner: 一个test runner 是由两部分成分:合理安排tests的执行、提供给user输出结果。runner可以用一个图形界面、文本、或者是一个特殊的值,代表tests执行的结果。

官方文档: https://docs.python.org/3.6/library/unittest.html

代码示例:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()
pytest

很好的强大的单元测试框架,实际上广泛使用在自动化单元、接口、功能等测试。

如果你的项目比较小、复杂度比较低,Pytest是最适合的自动化测试平台。非常多的Python开发者都喜欢它,他们大部分用它来进行单元测试。

Pytest最好的特性之一是,它提供了测试用例的详细失败信息,使得开发者可以快速准确地改正问题。它兼容最新版本的Python。它还兼容unittest、doctest和nose,开箱即用。它还有包含更多功能的插件和多样化的现有测试技术和测试用例。

官方文档:https://pytest.org/en/latest/

脚本执行示例:

# content of test_sample.py
def inc(x):
    return x + 1


def test_answer():
    assert inc(3) == 5

执行后的信息:

$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-5.x.y, py-1.x.y, pluggy-0.x.y
cachedir: $PYTHON_PREFIX/.pytest_cache
rootdir: $REGENDOC_TMPDIR
collected 1 item

test_sample.py F                                                     [100%]

================================= FAILURES =================================
_______________________________ test_answer ________________________________

    def test_answer():
>       assert inc(3) == 5
E       assert 4 == 5
E        +  where 4 = inc(3)

test_sample.py:6: AssertionError
========================= 1 failed in 0.12 seconds =========================
Robot Framework

Robot Framework- 通用的python测试框架,提供一个图形用户界面,方便管理和编辑测试用例,易于上手,生成的报告比较好看,支持关键字和数据等驱动。

Robot Framework是独立于操作系统和应用程序,支持跨平台,例如Windows、MacOS和Linux。这个产品是由世界上一些著名的测试人员创建的,拥有关键词驱动方案。它有丰富的工具和库,使得这个框架非常先进和健壮。

官方文档: http://robotframework.org

示例:

img

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
7天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
33 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
16 6
|
1天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
11 4
|
3天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
13 2
|
5天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
14 3
|
3天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
14 1
|
7天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
5天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
20 0
|
2天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!

热门文章

最新文章