image.png
在上面做下载图片的时候,默认图片都放在代码所在的目录中。最后将图片放在指定的目录下。

os 模块

os 模块是Python中内置的模块,可以用来生成路径。以及执行一些系统命令的功能。

os.path 路径相关

  • __file__ python中内置的全局变量,表示当前文件
  • os.path.abspath() 返回文件所在绝对路径
  • os.path.dirname() 返回文件所在的目录 ```python

    导入 os

    import os

def test_os_demo():

  1. # 获取当前文件所在的绝对路径
  2. # __file__ 是Python中内置的全局变量,在任何地方都可以,表示当前的文件。
  3. # asbpath 绝对路径方法。
  4. p1 = os.path.abspath(__file__)
  5. print(f"当前文件绝对路径 {p1}") # C:\Users\zengy\PycharmProjects\pythonProject14\test_cases\test_os.py
  6. # os.path.dirname 当前文件的所在的目录
  7. p2 = os.path.dirname(p1)
  8. print(f"当前所在目录 {p2}") # C:\Users\zengy\PycharmProjects\pythonProject14\test_cases
  9. p3 = os.path.dirname(p2)
  10. print(p3) # C:\Users\zengy\PycharmProjects\pythonProject14
<a name="HGsYz"></a>
## 创建目录
```python
# 导入 os
import os

def test_os_demo():
    # 获取当前文件所在的绝对路径
    # __file__ 是Python中内置的全局变量,在任何地方都可以,表示当前的文件。
    # asbpath 绝对路径方法。
    p1 = os.path.abspath(__file__)
    print(f"当前文件绝对路径 {p1}")  # C:\Users\zengy\PycharmProjects\pythonProject14\test_cases\test_os.py
    # os.path.dirname 当前文件的所在的目录
    p2 = os.path.dirname(p1)
    print(f"当前所在目录 {p2}") # C:\Users\zengy\PycharmProjects\pythonProject14\test_cases
    p3 = os.path.dirname(p2)
    print(p3) # C:\Users\zengy\PycharmProjects\pythonProject14
    # 路径拼接。 在 p3的目录下创建一个pngs目录 专门来存放图片
    # os.path.join 将两个路径拼接到一起
    p4 = os.path.join(p3,"pngs")
    print(p4) # C:\Users\zengy\PycharmProjects\pythonProject14\pngs
    # 创建目录
    # 先判断目录是否存在
    b = os.path.exists(p4)
    print(b) # False 表示不存在
    # 如果目录路径不存在
    if not b:
        # 创建目录
        os.mkdir(p4)
  • os.path.join() 将路径拼接到一起
  • os.path.exsits() 判断路径是否存在
  • os.mkdir() 创建目录。

创建目录,在后面我们做csv参数的化的时候,可以使用代码生成数据文件,生成的数据文件最好保存到一个特定的目录,到时候就需要使用到os 模块。
另外执行测试用例,执行完成之后生成的测试报告,也需要保存到特定的目录,也需要使用到os模块。

代码改造

改造下载豆瓣电影的代码,将所有的图片都放在 项目根目录下的pngs 目录中。

# 导入 os
import os
import requests
# 获取当前文件所在的绝对路径
# __file__ 是Python中内置的全局变量,在任何地方都可以,表示当前的文件。
# asbpath 绝对路径方法。
p1 = os.path.abspath(__file__)
print(f"当前文件绝对路径 {p1}")  # C:\Users\zengy\PycharmProjects\pythonProject14\test_cases\test_os.py
# os.path.dirname 当前文件的所在的目录
p2 = os.path.dirname(p1)
print(f"当前所在目录 {p2}") # C:\Users\zengy\PycharmProjects\pythonProject14\test_cases
p3 = os.path.dirname(p2)
print(p3) # C:\Users\zengy\PycharmProjects\pythonProject14
# 路径拼接。 在 p3的目录下创建一个pngs目录 专门来存放图片
# os.path.join 将两个路径拼接到一起
p4 = os.path.join(p3,"pngs")
print(p4) # C:\Users\zengy\PycharmProjects\pythonProject14\pngs
# 创建目录
# 先判断目录是否存在
b = os.path.exists(p4)
print(b) # False 表示不存在
# 如果目录路径不存在
if not b:
    # 创建目录
    os.mkdir(p4)

def test_download_pngs():
    url = "https://movie.douban.com/j/search_subjects"
    qeurydata = {
        "type": "movie",
        "tag": "最新",
        "page_limit": 50,
        "page_start": 0
    }
    heardersdata = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"
    }
    r = requests.get(url=url, params=qeurydata, headers=heardersdata)
    print(r.request.headers)
    print(r.status_code)
    print(r.json())
    # 循环服务器返回的结果
    for subject in r.json()["subjects"]:
        name = subject["title"]
        cover_url = subject["cover"]
        print(f"下面即将下载电影海报: 电影名:{name}, 海报地址{cover_url}")
        res = requests.get(url=cover_url,headers=heardersdata)
        # 将文件保存到指定目录
        pngfile = os.path.join(p4,name+".png")
        with open(file=pngfile,mode='wb') as f:
            f.write(res.content)
  • 执行代码之前,先将目录创建好。
  • 保存文件的时候,进行文件路径拼接。

生成测试数据到指定目录

"""
项目根目录下创建csvdata 目录。
生成 用户注册的测试数据到csv文件
"""
import os
import csv
p1 =os.path.abspath(__file__)
p2 = os.path.dirname(p1)
p3 = os.path.dirname(p2)
# 项目根目录 路径拼接
p4 = os.path.join(p3,"csvdata")
# 如果不存在 csvdata
if not os.path.exists(p4):
    os.mkdir(p4)

def test_register_data():
    usernames = ["13212341234","1321234123","132123412341","","***&&&"]
    passwds = ["","12345","1234567890123456789"]
    # 指定csv文件路径
    csvfile = os.path.join(p4,'register.csv')
    print(f"csv文件的路径{csvfile}")
    with open(file=csvfile,mode='w',encoding='utf8',newline='') as f:
        # 创建写入对象
        cw = csv.writer(f)
        # 写入表头
        cw.writerow(['用户名',"密码"])
        for username in usernames:
            for passwd in passwds:
                print(username,passwd)
                # 循环一个数据,写一行内容
                cw.writerow([username,passwd])

在公司中,做接口测试,可以使用postman,jmeter 这些工具来做。
也可以使用Python来做,最终的结果还是进行测试,保证软件的质量。
也可以结合python+postman 或者 jmeter 一起进行测试。
可以使用 python 生成测试数据,在postman或者jmeter 中直接使用生成的测试数据文件进行测试。