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()
    • 这样是不是更直观些,那么面向过程编程就是对函数的应用。

总结

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

相关文章
|
4天前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
18 2
|
3天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
8天前
|
测试技术 API Python
python在自动化测试中的经典例子
python在自动化测试中的经典例子
23 12
|
3天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【9月更文挑战第10天】随着软件应用的不断扩展,性能测试成为确保系统稳定运行的关键环节。本文通过对比Apache JMeter和Locust,探讨了如何在Python环境中利用这两款工具挖掘更多性能测试潜力。JMeter是一款成熟且功能强大的开源工具,支持多种协议,适用于各种应用的测试;而Locust则基于Python,通过简单脚本模拟HTTP请求,更适合Web应用测试。
11 2
|
8天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
32 5
|
5天前
|
消息中间件 监控 测试技术
惊呆了!Python性能测试高手都用这些神器:JMeter+Locust,效率翻倍📈
【9月更文挑战第8天】在软件开发中,性能测试对确保应用稳定性和高效运行至关重要。对于Python开发者而言,选择合适的性能测试工具能显著提升测试效率并精准定位性能瓶颈。本文深入探讨了JMeter和Locust这两款工具的独特优势。JMeter作为跨平台的性能测试工具,支持多种协议,具备高度可定制性和扩展性;而Locust则专为Python应用设计,利用协程实现高并发,提供实时监控和分布式测试功能。两者结合使用,可在实际项目中实现1+1&gt;2的效果,帮助开发者构建全面高效的测试方案,保障应用稳定运行。
27 1
|
9天前
|
Python
python 函数
【9月更文挑战第4天】python 函数
32 5
|
7天前
|
测试技术 Apache 数据库
从慢如蜗牛到飞一般的感觉!Python性能测试实战,JMeter&Locust助你加速🏃‍♂️
【9月更文挑战第6天】你的Python应用是否曾因响应缓慢而让用户望而却步?借助JMeter与Locust,这一切将迎刃而解。JMeter作为Apache基金会的明星项目,以其强大的跨平台和多协议支持能力,成为性能测试领域的魔法师;而Locust则以Python的简洁与高效,让性能测试更加灵活。通过实战演练,你可以利用这两款工具轻松识别并解决性能瓶颈,优化数据库查询、网络配置等,最终使应用变得敏捷高效,轻松应对高并发挑战。
9 1
|
7天前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
56 35
|
4天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。