Python接口自动化测试框架(练习篇)-- 函数编程(一)

简介: 本文通过实际的编程练习,讲解了面向过程编程的概念和应用,包括如何定义函数、处理文件读写以及实现用户注册功能,最终将这些过程封装成函数,体现了Python作为脚本语言的面向过程编程特性。

前言

python为什么会被认为它是脚本语言,就是因为它的面向过程编程特性,它不需要封装和继承,封装是对于类而言的,而函数是被定义的。它执行顺序是自上而下,所以它更像是一个过程。如果要实现什么功能,就可以按步骤实现:先实现什么,再实现什么,如果不想被执行,就将它们定义成函数,被调用时才执行。所以它也可以是面向过程和函数编程的组合。

练习

主要练习定义函数的方向,还要结合数据类型的处理

写了一个注册的功能
  • 要求:把所有注册成功的用户数据放到文件中进行保存,数据存储的格式不限
  • 提示:每次运行程序,先去文件中读取所有注册过的用户数据,程序运行完之后,将所有的用户数据再次写入到文件中,可以直接在文件中写个列表
分析

应该要画一个注册流程图,注册的时候,优先需要查库(这里是对比文件),是否数据库中已存在,是则不需测试提示去登录就好了,否则才去注册,那么在注册的过程中需要判断帐号密码的合法性(这里不校验帐号的合法性),这样一来二去就理清楚主功能函数的来龙去脉。

def read_user_info():
    '''读取用户信息'''
    try:
        with open(file=r'../txt2/user_info.txt',mode='r',encoding="utf-8") as fp:
            data=eval(fp.read())
    except:
        print("打开文件失败")
        return []
    else:
        return data


def write_user_info(data):
    '''写入用户信息'''
    try:
        with open(file=r'../txt/user_info.txt',mode='w',encoding="utf-8") as fp:
            fp.write(str(data))
    except:
        print("写入文件不存在")

def user_register():
    '''完成用户注册'''
    li1=read_user_info()
    user_name=[]

    try:
        for j in range(len(li1)):
            user_name.append(li1[j]["name"])
    except:
        print("读取数据失败,没有用户数据") 

    while True:
        account=input("请输入账号:")
        passwd=input("请输入密码:")
        vpasswd=input("请再次确认密码:")
        if account not in user_name:
            if  passwd==vpasswd and (len(passwd)>=6 and len(vpasswd) >=6) :
                print("用户名:{}没被注册过!".format(account))
                li1.append({
   "name":account,"passwd":passwd})
                write_user_info(li1)
                print("用户名:{},恭喜你完成注册!".format(account))
                break
            elif len(passwd)<6 or len(vpasswd) <6:
                print("输入密码不能小于六位!")
            else:
                print("输入密码不一致!请重新注册!")
        else:
            print("用户名:{}已被注册,请重新注册!".format(account))
  • 测试,输出结果如下:
请输入账号:123
请输入密码:12345678
请再次确认密码:1234666
输入密码不一致!请重新注册!
请输入账号:1234
请输入密码:123412
请再次确认密码:123412
用户名:1234没被注册过!
用户名:1234,恭喜你完成注册!
面向过程编程

上面的例子已经凸显出面向过程的思想:用户要注册要先查重再校验帐号密码最后才注册成功写入文件;那这种脚本化的流程会实际应用在哪里呢?

最终会演进成类和对象,所有流程要经过的操作步骤,变成了方法,那么再通过类的对象实现调用,按步骤完成整个流程。

  • 可能使用selenium工具举例,更能说明这个面向过程编程的案例:
from selenium import webdriver

# 初始化对象
driver = webdriver.Chrome()
# 打开浏览器
driver.get("http://www.baidu.com")
# 输入查询类容:
driver.find_element_by_id("kw").sendKeys("selenium")
# 点击搜索按钮
driver.find_element_by_id("su").click()
# 关闭浏览器
driver.quit()
    • 这样是不是更直观些,那么面向过程编程就是对函数的应用。

总结

诀窍,在后面讲类和对象的时候,如果不能确定要做成什么类,记得先将步骤(功能)一个个的定义成函数,再将同类型的操作(函数)封装成类,这样做的好处呢,可以在封装类之前,不用对象就能进行代码调试,最终完成一套完整的业务流程。

相关文章
|
6天前
|
数据可视化 数据管理 测试技术
聊聊自动化测试框架
关于自动化测试框架的一些理解和思考总结,就是上面这些内容,提到的一些框架组件可能存在不合理的地方,仅供参考,如有更好的建议,请指出,不胜感激
17 4
聊聊自动化测试框架
|
1天前
|
敏捷开发 IDE 测试技术
自动化测试框架的选择与应用
【9月更文挑战第16天】在软件开发周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的流行,自动化测试成为提升软件质量和效率的关键手段。本文将探讨如何根据项目需求选择合适的自动化测试框架,并通过实际案例分析展示其在软件开发过程中的应用。我们将从单元测试、集成测试到端到端测试等多个层面,讨论自动化测试的最佳实践和常见问题解决策略。
|
6天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
27 3
快速上手|HTTP 接口功能自动化测试
|
8天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
13天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架
|
15天前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
39 5
|
16天前
|
机器学习/深度学习 PyTorch 算法框架/工具
python这些库和框架哪个更好
【9月更文挑战第2天】python这些库和框架哪个更好
31 6
|
16天前
|
机器学习/深度学习 数据采集 算法框架/工具
python有哪些常用的库和框架
【9月更文挑战第2天】python有哪些常用的库和框架
18 6
|
14天前
|
数据采集 测试技术 API
在BrowserStack上进行自动化爬虫测试的终极指南
随着互联网的发展,数据价值日益凸显,爬虫技术成为提取网页信息的关键工具。然而,不同环境下的测试与运行挑战重重,特别是在多浏览器、多平台上保证爬虫的稳定性和兼容性尤为困难。BrowserStack作为领先的跨浏览器测试平台,提供了强大的工具和服务。本文将详细介绍如何在BrowserStack上进行自动化爬虫测试,并结合代理IP技术提升爬虫的隐蔽性和成功率。通过具体步骤和案例分析,展示如何利用Selenium、自定义用户代理和Cookie设置来应对反爬虫机制。本指南旨在为开发者提供实用模板,帮助其在多变的测试环境中构建高效的爬虫系统。
|
17天前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
40 4