Python自动化测试实战:深度解析Scripts脚本层结构!
很多刚刚尝试自动化测试小伙伴的朋友们,对于我们的自动化「懒人代码」的只会使用,但不了解其运行原理。不用担心,今天我们对于Scripts脚本里边中的类和函数进行详细的讲解(以登录购物商城为例)
虽然是代码讲解,但非常简单的噢~
简介
这是我们的代码项目目录(想必小伙伴们已经非常的熟悉了)
完整的商场登录Scripts代码:
from tools.get_driver import GetDriver
from tools.read_json import read_json
from page.shopping.login import PageLogin
from tools.get_log import GetLoglog = GetLog.get_logger()
import allure@allure.feature("登录方法类")
class TestLogin:# 初始化log.info("初始化")def setup_class(self):# 初始化json数据self.data_json = read_json("login.json")# 初始化driverself.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)raiseif __name__ == '__main__':TestLogin().test_login()
1、class TestLogin:
脚本中首先会看到一个类 class TestLogin
类(Class),在Python中的作用是可以将几个函数整合起来,作为一个大的方法去调用
在我们的自动化测试代码中,使用类将我们的 数据+浏览器初始化,关闭浏览器,以及调用测试脚本整合起来,方便运行;这样写还可以使我们代码的方便阅读与维护
新手小伙伴请注意:在Python3中,类加()
和不 ()
是等价的;也就是说class TestLogin:
和 class TestLogin():
都可以
# 登录商城类
class TestLogin:
2、def setup_class(self):
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")# 初始化driverself.driver = GetDriver().get_driver(self.data_json[0])
3、def teardown_class(self):
既然在pytest中有setup_class()
初始化函数,那么就会有对应的关闭操作:teardown_class()
函数。teardown_class
函数在整个测试类运行之后执行一次(不关心一个类里面有多少个测试用例),一般用来进行关闭浏览器的操作
teardown_class()
函数也是属于类级别的函数
# 登录商城类
class TestLogin:# 关闭操作
def teardown_class(self):# 关闭浏览器self.driver.quit()
4、def test_login(self)
这是我们调用测试脚本的函数。我们在使用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
5、if __name__ == '__main__'
作为脚本启动器,主要作用是将if __name__ == '__main__'
下的脚本直接执行。
当然它还有另外一个作用是被调用到其他的Python脚本中时if __name__ == '__main__'
下的脚本不执行,这个并不是我们在这里使用它的主要目的
虽然Scripts层脚本里的类和函数不少,但都是很基础的初始化、调用等,看起来是不是比较简单的呢?如果还有关于自动化测试的问题可以在下面留言或私信小编噢~
