在python文件中,虽然我们可以在文件直接单行输出,打印,但是在项目中,因为要引入很多文件,文件之间有很多关联。
所以 在文件中如果要执行某个函数,或者执行某段代码,使用 if __name__=="__main__":
来执行。你可以理解为文件执行的入口。
创建 a.py
if __name__ == '__main__':
print("helloworld")
print("hahahahahahh")
print('aaaaaaaaaaaaa')
快捷键是 在编辑器中 输入main ,有对应的代码提示,如果没有,那就重新再来。
按下回车键 就可以自动生成。 为了让代码更规范,执行代码都放在 main 中。
if __name__ == '__main__':
from mylib.mytools import get_id
get_id()
实例演示
创建项目
【File】—【New Project】
之前写的代码,可以通过 【File】—【Open Recent】找到。
创建新项目的时候。会弹出对话框。
创建虚拟环境。
打开新项目
创建对应的包
自动化项目的主要代码结构。
- common 存放一些常用的工具,比如生成手机号,生成身份证id
- testdata 存放一些测试数据文件
- testcase 存放自动化测试用例
- reports 存放测试报告
编写代码 🎈
在 common 包下创建 utils.py 模块。 这里编写 生成手机号,和 生成身份证id的函数
"""
这个文件中存放自己定义的一些常用的工具函数。
"""
import random
def get_phone():
"""
自动随机生成一个手机号码
:return:
"""
pre_phones = ["130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
"170", "172", "179",
"150", "151", "155", "156",
"188",
"199"]
# 随机取号段
pre_3 = random.choice(pre_phones)
print(f"随机选择号段 {pre_3}")
# 生成后8位
last_8 = ""
for i in range(8):
# 随机生成一个数字n
n = random.randint(0, 9)
# 拼接字符串 将n转换为字符串
last_8 = last_8 + str(n) # 每次随机取到一个数字,转换字符串之后 放到last_8 后面
print(f"生成后8位 {last_8}")
# 将前3位后8位 组合一起
phone = pre_3 + last_8
return phone
if __name__ == '__main__':
# 测试生成手机号
print(get_phone())
测试生成手机号码函数。
将生成身份证id的相关方法 也放在py’文件中。
"""
这个文件中存放自己定义的一些常用的工具函数。
"""
import random
def get_phone():
"""
自动随机生成一个手机号码
:return:
"""
pre_phones = ["130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
"170", "172", "179",
"150", "151", "155", "156",
"188",
"199"]
# 随机取号段
pre_3 = random.choice(pre_phones)
print(f"随机选择号段 {pre_3}")
# 生成后8位
last_8 = ""
for i in range(8):
# 随机生成一个数字n
n = random.randint(0, 9)
# 拼接字符串 将n转换为字符串
last_8 = last_8 + str(n) # 每次随机取到一个数字,转换字符串之后 放到last_8 后面
print(f"生成后8位 {last_8}")
# 将前3位后8位 组合一起
phone = pre_3 + last_8
return phone
def get_id():
"""
随机生成身份证号
:return:
"""
# 函数定义在函数的内部 闭包
def pre_6():
n = ""
for i in range(6):
# 循环6次 每次生成1个随机数字,转换位字符串进行拼接
n = n + str(random.randint(0, 9))
# 循环执行完成
return n
def ymd_8(startyear=1922, endyear=2021):
# TODO 一系列操作之后 生成一个随机的年月日
# 生成出生的年 随机生成
year = random.randint(startyear, endyear)
print(f"生成年份 {year}")
# 生成月份 1-12
month = random.randint(1, 12)
# 如果月份在1-9 之间,前面需要补0
if month < 10:
month = "0" + str(month) # 转换位字符串之后前面 补0
print(f"生成的月份 {month}")
# 1,3,5,7,8,10,12 天数 31天
if int(month) in [1, 3, 5, 7, 8, 10, 12]:
day = random.randint(1, 31) #
# 4,6,9,11 月 30天
elif int(month) in [4, 6, 9, 11]:
day = random.randint(1, 30)
# 闰年 2月份 29天
elif (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
day = random.randint(1, 29)
# 以上都不符合,那就是平年
else:
day = random.randint(1, 28)
# 如果day 在1-9 之间 前面补0
if day < 10:
day = "0" + str(day)
print(f"生成的日期 {day}")
# 转换为字符串 进行拼接
ydm = str(year) + str(month) + str(day) # 等价于 f"{year}{month}{day}"
return ydm
def last_4():
nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X']
# 前三位 数字
n3 = ""
for i in range(3):
n3 = n3 + str(random.randint(0, 9))
# 第四位 随机从 nums 选择一个
n4 = random.choice(nums)
# 将n3 和 n4 拼接之后返回
return n3 + n4
# 生成身份证id
id = pre_6() + ymd_8() + last_4()
return id
if __name__ == '__main__':
# 测试生成手机号
# print(get_phone())
# 测试生成身份证id
print(get_id())
相关执行
项目的testcases 包下 编写测试用例。
创建py文件 test_demo.py, 在文件中引用 utils 定义的函数。
# 导入包
from common.utils import get_id,get_phone
if __name__ == '__main__':
id = get_id()
phone = get_phone()
print(f'id:{id}')
print(f'phone: {phone}')
执行。可以看到执行结果。