飞道的博客

Selenium之Page Object Model 设计理念 ------Case篇

396人阅读  评论(0)

在我们学习selenium的po模式之前,我们先要了解什么是自动化测试,以及selenium中的八大定位的基本操作,那么接下来,您可以跟我一起走进po模式中的Case篇的编写(通过调用Page页来执行用例)

引言

Case页的理念

通过调用Page页填充好的定位信息来具体实施用例,比传统的编写自动化用例更加简洁,减少了多余的代码,如果以后开发将定位元素进行修改,我们也可以回到Page中修改定位元素,这样代码又可以复用了

通过之前编写的Page页,这次我们来在case页中具体执行用例

Page页的具体编写

本博主会持续更新,现在对一号店购物平台来设计自动化测试用例

编写Case页前提:

已经编写好相关模块的Page,比如博主在做的一号店登录,那么就要先准备好Page页

1、首先要在Case包下创建test_login.py文件,并创建YHD_Login类

2、导入common共用类方法,导入对应的Page

3、引用数据驱动,导入unittest框架、导入生成HTML报告模块、导入selenium下的webdriver

4、准备好用那种方式做数据驱动(博主比较喜欢CSV,因为简单),并设计好执行数据

准备好的三组数据–csv格式

from Page_Object_Model.Page.Login_Page import Logins
import unittest
from ddt import ddt,data
from Page_Object_Model.Common.common import Common
import HTMLTestReportCN
from selenium import webdriver
@ddt  # 数据驱动 ddt
class YHD_Login(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.log = Common().GetLogs()  #我在Common页把Common类的path路径定死了,所以不需再传路径
        cls.log.debug('开始执行一号店登录用例')
    @classmethod
    def tearDownClass(cls) -> None:
        cls.log.debug('所有用例执行结束')
    def setUp(self) -> None:
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(20)
        self.log.debug('开始执行本条用例')
    def tearDown(self) -> None:
        self.log.debug('本条用例结束')
        self.driver.quit()
    @data(Common().ReadCSV('一号店登录数据'))
    def test_001(self,data):  
        for i in range(0,2): #将csv表内数据做循环,因为只有三组数据,所以循环三次
            admin = Logins(self.driver,"https://www.yhd.com/")
            admin.get_url()
            admin.click_login()
            admin.input_username(data[i][0])
            admin.input_pwd(data[i][1])
            self.driver.quit()
            self.setUp()



if __name__ == '__main__':
    loader = unittest.TestLoader().loadTestsFromTestCase(YHD_Login)  #使用loader加载用例的方式去寻找YHD_Loigin类下的所有以test开头的用例
    suite = unittest.TestSuite([loader,]) # 将找到的用例加入测试容器中
    import time
    now = time.strftime('%Y-%m-%d-%H-%M-%S')
    path = r'D:\PycharmProjects\自动化\Page_Object_Model\Report\HTML'+'/' + now + '.html'
    with open(path,'wb+') as f:  #  生成HTML报告
        run = HTMLTestReportCN.HTMLTestRunner(stream=f,tester='白嘉诚',description='Case页调用Page页执行用例',title='一号店登录模块执行结果')
        run.run(suite)
        

以上就是PO模式的具体实施,Case页调用Page来执行自动化测试用例

总体来说PO还是比较好用的,目前还是主流

如有疑问,请在博客下方留言

小友定当知无不尽


转载:https://blog.csdn.net/weixin_46457203/article/details/105877689
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场