在python文件中,虽然我们可以在文件直接单行输出,打印,但是在项目中,因为要引入很多文件,文件之间有很多关联。
所以 在文件中如果要执行某个函数,或者执行某段代码,使用
if __name__=="__main__": 来执行。你可以理解为文件执行的入口。

创建 a.py

  1. if __name__ == '__main__':
  2. print("helloworld")
  3. print("hahahahahahh")
  4. print('aaaaaaaaaaaaa')

快捷键是 在编辑器中 输入main ,有对应的代码提示,如果没有,那就重新再来。
image.png
按下回车键 就可以自动生成。 为了让代码更规范,执行代码都放在 main 中。

  1. if __name__ == '__main__':
  2. from mylib.mytools import get_id
  3. get_id()

image.png


我们学习代码,最终代码要组织起来,才能发挥强大的能力。

实例演示

创建项目

【File】—【New Project】
image.png
之前写的代码,可以通过 【File】—【Open Recent】找到。
image.png
创建新项目的时候。会弹出对话框。
创建虚拟环境。
image.png
打开新项目
image.png

创建对应的包

自动化项目的主要代码结构。

  1. - common 存放一些常用的工具,比如生成手机号,生成身份证id
  2. - testdata 存放一些测试数据文件
  3. - testcase 存放自动化测试用例
  4. - reports 存放测试报告

image.png

编写代码 🎈

在 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())

测试生成手机号码函数。
image.png
将生成身份证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}')

执行。可以看到执行结果。
image.png