
很多刚刚尝试自动化测试小伙伴的朋友们,对于我们的「懒人代码」的层级不太清楚。不用担心,我来给大家一一介绍~
这是我们的代码项目目录(想必小伙伴们已经非常的熟悉了),今天对于Scripts脚本里边中的类和函数进行详细的讲解(以登录购物商城为例)

image-20250928上午111057964
from tools.get_driver import GetDriver
from tools.read_json import read_json
from page.shopping.login import PageLogin
from tools.get_log import GetLog
log = GetLog.get_logger()
import allure
@allure.feature("登录方法类")
class TestLogin:
# 初始化
log.info("初始化")
def setup_class(self):
# 初始化json数据
self.data_json = read_json("login.json")
# 初始化driver
self.driver = GetDriver().get_driver(self.data_json[0])
# 结束
log.info("结束")
def teardown_class(self):
self.driver.quit()
# 调用page层的综合调用方法
log.info("调用page层的综合调用方法")
@allure.title("登录方法")
def test_login(self):
PageLogin(self.driver).page_login(self.data_json[1], self.data_json[2])
# 避免因为错误导致脚本异常中断
try:
# 判断是否登录成功
log.info("断言成功")
assert PageLogin(self.driver).page_get_word() == self.data_json[3]
# 未成功,抛出异常
except Exception as e:
log.info("断言失败")
print("错误信息为:", e)
raise
if __name__ == '__main__':
TestLogin().test_login()
脚本中首先会看到一个类 class TestLogin
类(Class)在Python中的作用是可以将几个函数整合起来,作为一个大的方法去调用
在我们的自动化测试代码中,使用类将我们的 数据+浏览器初始化,关闭浏览器,以及调用测试脚本整合起来,方便运行;这样写还可以使我们代码的方便阅读与维护
新手小伙伴请注意:在Python3中,类加()和不 ()是等价的;也就是说class TestLogin:和 class TestLogin():都可以
# 登录商城类
class TestLogin:
pytest中定义的setup_class()函数与Python中的init()初始化函数类似,在整个测试类运行之前执行一次(不关心一个类里面有多少个测试用例),一般用来进行初始化浏览器和测试数据的操作
setup_class()初始化函数属于类级别初始化操作,翻译成人话来说:setup_class()只针对于Class类的开始和结束,而不针对Class类中的函数
# 登录商城类
class TestLogin:
# 初始化函数
def setup_class(self):
# 初始化json数据
self.data_json = read_json("login.json")
# 初始化driver
self.driver = GetDriver().get_driver(self.data_json[0])
既然在pytest中有setup_class()初始化函数,那么就会有对应的关闭操作:teardown_class()函数。teardown_class函数在整个测试类运行之后执行一次(不关心一个类里面有多少个测试用例),一般用来进行关闭浏览器的操作
teardown_class()函数也是属于类级别的函数
# 登录商城类
class TestLogin:
# 关闭操作
def teardown_class(self):
# 关闭浏览器
self.driver.quit()
这是我们调用测试脚本的函数。我们在使用setup_class()函数完成初始化浏览器和测试数据后,紧接着就是要调用Page层编写的测试用例
在脚本运行完成之后,需要加入assert()进行断言操作,以判断我们的脚本运行是否达到预期。比如我们的登录商城是以Hi,欢迎来到lilishop的欢迎语来断言脚本登录成功
try...except...是Python中的异常处理函数,为了避免因为断言异常,而导致我们的整个测试脚本运行失败
# 登录商城类
class TestLogin:
# 调用Page层测试方法
def test_login(self):
PageLogin(self.driver).page_login(self.data_json[1], self.data_json[2])
# 避免因为错误导致脚本异常中断
try:
# 判断是否登录成功
assert PageLogin(self.driver).page_get_word() == self.data_json[3]
# 未成功,抛出异常
except Exception as e:
print("错误信息为:", e)
raise
if __name__ == '__main__'作为脚本启动器,主要作用是将if __name__ == '__main__'下的脚本直接执行。
当然它还有另外一个作用是被调用到其他的Python脚本中时if __name__ == '__main__'下的脚本不执行,这个并不是我们在这里使用它的主要目的
虽然Scripts层脚本里的类和函数不少,但都是很基础的初始化、调用等,看起来是不是比较简单的呢?如果还有关于自动化测试的问题可以在下面留言或私信小编噢~
如果觉得有帮助,不要吝啬你的点赞,分享噢~