python——数据驱动

函数:

1、参数
形式参数:在定义函数时,函数里面的参数叫形式参数
实际参数:函数被调用的时候,给参数赋予的值叫实际参数
参数调用的注意事项:
默认参数:在定义函数的时候给形式参数指定了参数的值

def  add(b,c):
	d = b+c
	print(d)

add (b = 3,c = 5)
add(1,2)

输出:
8
3

def  add(b,c = 3):
	d = b+c
	print(d)
add(2)
add(b = 3 , c = 5)

输出:
5
8

动态参数

*:代表元组
**:代表字典

def func(*args,**kwargs):
print(args)
print(type(args))
print(kwargs)
print(type(kwargs))
func()
func([1,2,3])
func(a=1,b=2)
func(**{"name":"wuya","age":18})
func((1,2,3))

函数的返回值

return后面的值是函数的返回值,比如编写的函数输出的值其他函数需要,那么这个函数就需要把值返回

def login(username='wuya',password='admin'):
	if username=='wuya'and password=='admin':
		return 'abcd'
	else:
		return '账户或者密码错误'

def profile():
'''个人主页'''
if login()=='adcd':
	print("欢迎访问主页信息")
def registry():
	username=input('输入账户:\n')
	password=input('输入密码:\n')
	return username,password
print(registry())
username,password=registry()
print(username)
print(password)

输出结果:
wuya
输入密码:
admin
wuya
admin

内部函数

一些默认定义好的函数,直接使用,常用的有max(),min(),sum(),len(),type(),id()等等'''

list=[1,2,3,4,5,6]
print(max(list))
print(min(list))

输出结果:
6
1

匿名函数

func=lambda a,b:a+b
print(func(3,5))

func1=lambda a,b:a*b
print(func1(2,5))

输出结果:
8
10

列表推导式

list1=[x  for x in range(10) if x>2]
print(list1)
list1=[x for x in range(100) if x%3==0 and x!=0]
print(list1)

输出结果:
[3, 4, 5, 6, 7, 8, 9]

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

过滤函数filter

list4=filter(lambda a:a>2,[x for x in range(10)])
print(list(list4))

输出结果:
[3, 4, 5, 6, 7, 8, 9]

map:对所有的元素做同样的操作

list5=map(lambda a:a+10,[x for x in range(10)])
print(list(list5))

输出结果:
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

OS模块

在python中, os模块提供了对操作系统进行操作的接口。查看os模块使用的方法为dir(),查看该模块的帮助方法为help()。

import os
#获取当前级别目录
print(os.path.dirname(__file__))

base_dir=os.path.dirname(__file__)
#获取上级目录
base_dir=os.path.dirname(os.path.dirname(__file__))
print(os.path.join(base_dir,'函数','login.md'))
with open(os.path.join(base_dir,'函数','login.md'),'r') as f:
	print(f.read())

print(os.path.join(base_dir,'data','login.txt'))
with open(os.path.join(base_dir,'data','login.txt'),'r') as f:
print(f.read())

时间模块

JSON 序列化与反序列化

序列化:把python对象转为json的字符串过程:dumps()
反序列化:把json字符串转为python字符串的过程:loads()
这里的对象指的是数据类型字典,元组,列表,我们经常使用的json模块的方法为:dumps(),loads(),dump(),load(),其中dump()和load()是对文件的操作以及处理

import json
 dict1={"name":"wuya","age":18,"city":"xian","address":"陕西省"}
dict_str=json.dumps(dict1,indent=True,ensure_ascii=False)
print(type(dict1))
print(dict1)
print(type(dict_str))
print(dict_str)

str_dict=json.loads(dict_str)
print(type(str_dict))
print(str_dict)

list=[1,2,3,4,5]
list_str=json.dumps(list)
print(type(list_str))
print(list_str)
str_list=json.loads(list_str)
元组的序列化与反序列化:
元组序列化后的数据类型为字符串,但表现形式是列表,反序列后的数据类型为列表

tuple=(1,2,3)
tuple_str=json.dumps(tuple)
print(type(tuple_str))
print(tuple_str)

str_tuple=json.loads(tuple_str)
print(type(str_tuple))
print(str_tuple)
文件序列化中load()和dump()的用法:

需要先把数据写入到文件中,然后进行序列化和反序列化的操作。
序列化dump():把内容写道文件里面
反序列化load():从文件里面读取内容

import json
#写文件dump()
json.dump('hello world',open('data.txt','w'))
#读文件load()
print(json.load(open('data.txt','r')))

结果为:
image

数据驱动

自动化测试中,需要把测试的数据分离到JSON,YAML等文件中
1、首先需要安装yaml:pip install yaml
2、创建yaml文件data.yaml,文件具体内容如下:
3、yaml文件读取的方法为yaml.safe_load()
4、一般来讲yaml文件的返回类型为字典

login: 请输入你的登录账户

email:
  login:
	username: 2030004302@qq.com

实战练习1:

import yaml

def readYaml():
	with open('data.yaml','r',encoding='utf-8') as f:
		return yaml.safe_load(f)
print(readYaml())
print(type(readYaml()))
print(readYaml()['login'])
print(readYaml()['email']['login']['username'])

输出结果:
<class 'dict'>返回类型是字典
{'login': '请输入你的登录账户', 'email': {'login': {'username': '2030004302@qq.com'}}}
请输入你的登录账户
2030004302@qq.com

实战练习2:读取yaml文件返回列表类型的数据,读取方法为safe_load_all()。

import yaml

def readYaml():
	with open('lists.yaml', 'r', encoding='utf-8') as f:
		return list(yaml.safe_load_all(f))

print(readYaml())
print(type(readYaml()))
print(readYaml()[0]['login'])
print(readYaml()[1]['login'])

输出结果为:
[{'login': '请输入账户'}, {'login': '输入账户为空'}]
<class 'list'>
请输入账户
输入账户为空

数据存储之CSV

csv的读取有两种形式
1.列表的形式
2.字典的形式

创建CSV文件,内容如下:

username,password,text
ASDFzedf,sdzfxgty,请输入符合规范的邮箱
ASdzdf@sina.com,wedefr,账户密码错误

实战练习1:

import csv
#以字典类型读取csv数据

def readDictCsv():
	lists=[]
	with open('data.csv','r',encoding='utf-8') as f:
		reader=csv.DictReader(f)
		for i in reader:
			lists.append(dict(i))
	return lists

print(readDictCsv())
print(readDictCsv()[0]['text'])
print(readDictCsv()[1]['text'])

输出结果为:
[{'username': 'ASDFzedf', 'password': 'sdzfxgty', 'text': '请输入符合规范的邮箱'}, {'username': 'ASdzdf@sina.com', 'password': 'wedefr', 'text': '账户密码错误'}]
请输入符合规范的邮箱
账户密码错误

实战练习2:

#以列表类型读取csv文件
import csv
def readListCsv():
	list1=[]
	with open('data.csv','r',encoding='utf-8') as f:
		reader=csv.reader(f)
		next(reader)
		for i in reader:
			list1.append(i)
	return list1

print(readListCsv())
print(readListCsv()[0][2])
print(readListCsv()[1][2])
------------

输出结果为:
[['ASDFzedf', 'sdzfxgty', '请输入符合规范的邮箱'], ['ASdzdf@sina.com', 'wedefr', '账户密码错误']]
请输入符合规范的邮箱
账户密码错误
posted @ 2022-07-13 19:53  NANA~  阅读(269)  评论(0)    收藏  举报