方便好用!这个方法快速构造测试数据!

男娘i 2024-05-06 10:01 164阅读 0赞

5ed80d7da6904639a76a02864c8beec2.png

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI\_Green/article/details/134931243?spm=1001.2014.3001.5502

文章介绍

本文主要介绍在pycharm集成开发坏境中,使用python语言,利用psycopg2第三方库,向postgre数据库中插入数据,为测试环境构造模拟数据的过程。

包括psycopg2介绍、random函数介绍,以及根据案例一个具体的数据库表里插入20条记录进行代码拆分。

使用场景:为web 列表页造测试数据,以测试下拉框、页面跳转、查询等功能

46a7d7fae605411ba1b95bd4a9149471.png

为了测试以上内容,需要在web页面构造测试数据,接下来介绍psycopg2插件及random函数。

psycopg2介绍

什么是psycopg2?

psycopg2是一个用于访问PostgreSQL数据库的第三方库。

它提供了一个简单易用的API,使得在Python程序中进行数据库操作变得容易,包括查询、插入、更新和删除等操作。psycopg2基于C语言实现,具有高效性,能够提供高效的数据库操作。

特别注意psycopg2是特别针对PostgreSQL的数据库,如果你的数据库是其他类型还需要替换其他插件如sqlalchemy,SQLAlchemy适用于多种数据库库,包括MySQL、PostgreSQL、SQLite、Oracle等。

psycopg2使用过程:

总共分为6个过程

  • 安装psycopg2库。可以通过pip安装,使用命令:pip install psycopg2。
  • 建立与数据库的连接。

    import psycopg2

    创建连接对象

    conn = psycopg2.connect(

    1. host="localhost", #指定数据库服务器的地址
    2. database="mydatabase", #指定要连接的数据库的名称
    3. user="myuser", #指定用于连接到数据库的用户名,这里是myuser
    4. password="mypassword" #指定用于连接到数据库的密码,这里是mypassword

    )

  • 创建游标对象cur = conn.cursor()

  • 执行SQL语句,插入数据。可以使用execute()方法执行SQL语句。

    cur.execute(“INSERT INTO mytable (“INSERT INTO device_water (id, device_water_id, data_group,) VALUES ({id}, {device_water_id}, ‘{data_group}‘) #向device_water表里id, device_water_id, data_group字段插入数据

  • 提交事务,conn.commit()
  • 关闭游标和连接cur.close() conn.close()

random函数

接下来就案例中用到random函数常用的语法进行介绍:

  • random.randint(a, b):返回一个[a, b]范围内的随机整数,包括a和b。

    Eg: del_flag = random.randint(0, 1)

  • random.choice(a,b)从给定的集合中返回随机元素。

    Eg:workspace_code=’’.join(random.choices(‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’, k=5))

    workspace_code变量将包含一个随机的5位字符串,由小写字母、大写字母和数字组成。

真实案例

比如我们要添加的数据库表device_water,数据库查看表属性的方法为:选择表->点击生成SQL->选择DDL,根据这些属性编写构造测试数据脚本。

83876f185ea0490bbc0c27fdd7003f52.png

eea469de39ab4c239b9be2f7f13262ed.png

psycopg2模拟数据过程

安装插件:pip install psycopg2

结果如下:

图片

然后,使用以下Python脚本使用psycopg2生成测试数据并插入到public.device_power表中:

  1. import random
  2. from datetime import datetime
  3. import psycopg2
  4. # 创建数据库连接
  5. conn = psycopg2.connect(
  6. host='47.94.197.155',
  7. port=5432,
  8. dbname='ems-gqt-db-wx',
  9. user='ems',
  10. password='ems_2022'
  11. )
  12. # 获取游标对象
  13. cur = conn.cursor()
  14. # 定义插入数据的函数
  15. def insert_data():
  16. while True:
  17. id = random.randint(0, 99999999)
  18. device_water_id = random.randint(0, 99999999)
  19. # 检查id是否存在
  20. check_query = f"SELECT * FROM device_water WHERE id = {id} OR device_water_id = {device_water_id}"
  21. cur.execute(check_query) # 执行SQL语句
  22. result = cur.fetchone() # 返回一行数据
  23. if result is None:
  24. break # 如果结果为空,跳出循环
  25. data_group = random.choice(['farm1', 'farm2'])
  26. water_code = ''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', k=8))
  27. water_name = ''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', k=5))
  28. water_type_code = random.choice(['production', 'life'])
  29. process_code = ''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', k=5))
  30. flowmeter_code = ''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', k=5))
  31. is_total_consumption_count = random.choice(['Y', 'N'])
  32. del_flag = random.randint(0, 1)
  33. tenant_id = random.randint(0, 1)
  34. create_by = random.randint(0, 9)
  35. create_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  36. update_by = random.randint(0, 9)
  37. update_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  38. workspace_code = ''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', k=5))
  39. unit = random.choice(['立方米'])
  40. insert_query = f"INSERT INTO device_water (id, device_water_id, data_group, water_code, water_name, water_type_code, process_code, flowmeter_code, is_total_consumption_count, del_flag, tenant_id, create_by, create_time, update_by, update_time, workspace_code, unit) VALUES ({id}, {device_water_id}, '{data_group}', '{water_code}', '{water_name}', '{water_type_code}', '{process_code}', '{flowmeter_code}', '{is_total_consumption_count}', {del_flag}, {tenant_id}, {create_by}, '{create_time}', {update_by}, '{update_time}', '{workspace_code}', '{unit}')"
  41. cur.execute(insert_query)
  42. conn.commit()
  43. print(insert_query)
  44. # 插入20条数据
  45. for _ in range(20):
  46. insert_data()
  47. # 关闭游标和数据库连接
  48. cur.close()
  49. conn.close()

上述代码完成后运行结果如下图所示,实现了向device_water插入20条数据,具体多少条数据可以更改。

737fc341b1ca41dfb25450b4a25562f3.png

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

06b7bc1a690d4c4f826248342215214c.png

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

3010ebc19b1042d4a4e99e0c9334bb1c.gif

发表评论

表情:
评论列表 (有 0 条评论,164人围观)

还没有评论,来说两句吧...

相关阅读