作用:

PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用,提高代码简洁度,实现同样效果。

框架结构:

代码简单实践:

common模块下 selenium_base_case.py :

#coding=gbk
import unittest
from common.base_page import BasePage
from common.set_driver import set_driver
from common.config_utils import config

class SeleniumBaseCase(unittest.TestCase):

def setUp(self) -> None:
self.base_page = BasePage(set_driver())
self.base_page.set_browser_max()
self.base_page.implicitly_wait()
self.base_page.open_url(config.get_url)

def tearDown(self) -> None:
self.base_page.close_tab()

login模块对该方法进行调用,并希望在自己的初始化中单独增加内容可如下操作:

#coding=gbk
import unittest
from common.set_driver import set_driver
from common.base_page import BasePage
from actions.login_action import LoginAction
from common.config_utils import config
from common.selenium_base_case import SeleniumBaseCase #引入公共模块下的SeleniumBaseCase类

class LoginTest(SeleniumBaseCase):
#希望再增加初始化代码:
def setUp(self) -> None:
super().setUp()
print('hello,我是执行公共的setup后再增加执行的')

def test_login_success(self):
login_action = LoginAction( self.base_page.driver )
main_page = login_action.login_success('admin','201314ANQIER1')
actual_result = main_page.get_username()
self.assertEqual(actual_result,'admin','test_login_success用例执行失败')

main测试模块调用,直接使用公共初始化即可,那么代码可编写如下:

#coding=gbk
import unittest
from common.set_driver import set_driver
from common.base_page import BasePage
from actions.login_action import LoginAction
from actions.quit_action import QuitAction
from common.config_utils import config
from common.selenium_base_case import SeleniumBaseCase

class QuitTest(SeleniumBaseCase): #直接写案例即可

def test_quit(self):
login_action = LoginAction(self.base_page.driver)
main_page = login_action.default_login()
main_page.wait(3)
print("登录成功")
quit_action = QuitAction( main_page.driver )
login_page = quit_action.quit()
actual_result = login_page.get_title()
print(actual_result)
self.assertEqual( actual_result.__contains__('用户登录'),True,'test_quit用例不通过' )

if __name__=='__main__':
unittest.main()

实现原理:

SeleniumBaseCase   为 所有XX.test.py 的父类类 。

unittest.TestCase   为SeleniumBaseCase   类的父类,所以XX.test.py  通过集成SeleniumBaseCase    类间接也集成了unittest.TestCase  类。

Python_selenium PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用的更多相关文章

  1. click 在网页测试手机模式下无效,不能执行。调成非手机模式即可

    click  在网页测试手机模式下无效,不能执行. 调成非手机模式即可

  2. Unary模式下客户端创建 default-executor 和 resolver-executor 线程和从启动到执行grpc_connector_connect的主要流程

    (原创)C/C/1.25.0-dev grpc-c/8.0.0, 使用的例子是自带的例子GreeterClient 创建 default-executor 和 resolver-executor 线程 ...

  3. Python_Selenium 之PO模式的思想、优化思路

    一.PO模式思想 PO模式是一种自动化测试设计模式,将页面定位和业务操作分开,也就是把对象的定位和测试脚本分开,从而提供可维护性. PO设计模式基础(页面作为类.元素对象作为属性.元素操作作为方法) ...

  4. 保护模式下pmtest1.asm的理解

    整个代码对应内存线性地址分为四段,[gdt] [code32] [video32] [code16] 代码先在实模式[code16]下运行,code16中的cs就是系统分配的该程序物理地址的基址. 编 ...

  5. sql服务器第5级事务日志管理的阶梯:完全恢复模式下的日志管理

    sql服务器第5级事务日志管理的阶梯:完全恢复模式下的日志管理 原文链接http://www.sqlservercentral.com/articles/Stairway+Series/73785/ ...

  6. Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77942585 前面的博客<Android平台dalvik模式下java Ho ...

  7. 个人从源码理解angular项目在JIT模式下的启动过程

    通常一个angular项目会有一个个模块(Module)来管理各自的业务,并且必须有一个根模块(AppModule)作为应用的入口模块,整个应用都围绕AppModule展开.可以这么说,AppModu ...

  8. Dalvik模式下基于Android运行时类加载的函数dexFindClass脱壳

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78003184 前段时间在看雪论坛发现了<发现一个安卓万能脱壳方法>这篇 ...

  9. js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?

    日常在群里讨论一些概念性的问题,比如变量提升,作用域和闭包相关问题的时候,经常会听一些大佬们给别人解释的时候说执行上下文,调用上下文巴拉巴拉,总有点似懂非懂,不明觉厉的感觉.今天,就对这两个概念梳理一 ...

随机推荐

  1. Java中的反射机制Reflection

    目录 什么是反射? 获取.class字节码文件对象 获取该.class字节码文件对象的详细信息 通过反射机制执行函数 反射链 反射机制是java的一个非常重要的机制,一些著名的应用框架都使用了此机制, ...

  2. 第二章 FreeBSD之开机关机命令

    立即关机,但是不关闭电源 # shutdown -h now 立即关机,并且关闭电源 # shutdown -p now 重启命令 # shutdown -r now

  3. 你管这破玩意叫CPU?

    每次回家开灯时你有没有想过,用你按的开关实际上能打造出 复杂的 CPU来,只不过需要的数量可能比较多,也就几十亿个吧. 伟大的发明 过去200年人类最重要的发明是什么?蒸汽机?电灯?火箭?这些可能都不 ...

  4. SQL必学必会笔记 —— 基础篇

    基础篇 SQL语言按照功能划分 DDL(DataDefinitionLanguage),也就是数据定义语言,它用来定义我们的数据库对象,包括 数据库.数据表和列.通过使用DDL,可以创建,删除和修改数 ...

  5. 一次 Go 程序 out of memory 排查及反思

    前言 最近在搞数据导出模块,在测试大文件下载的过程中,报了 Out of memory (OOM) 错误,因为之前没有遇到过这类问题,导致此次排查问题花费了大半天,也走了不少弯路,特此复盘记录. 现象 ...

  6. 头文件string.h,cstring与string

    string.h string.h是一个C标准头文件,所有的C标准头文件都形如name.h的形式,通过#include <string.h>可以导入此头文件.之后我们就可以在程序中使用st ...

  7. Journey to the future begins

    当提交申请的那一刻,我就更加确认了自己想要走的路,慢慢一路向上,追求自己想要的生活! 2021.5.18 wzb

  8. mysql如何设置一个字段,里面是自增的序号(1,2,3,..........)。

    [遇到问题] [可忽略] 想把以前写的留言板搬到我的网站上去,所以要在Mysql上创建一个一mu一样的数据库,表单,字段..................... userid这个字段忘记了如何添加, ...

  9. 分布式存储ceph---ceph osd 故障硬盘更换(6)

    正常状态: 故障状态: 实施更换步骤: 1.关闭ceph集群数据迁移: osd硬盘故障,状态变为down.在经过mod osd down out interval 设定的时间间隔后,ceph将其标记为 ...

  10. Apache Flink 1.12.0 正式发布,DataSet API 将被弃用,真正的流批一体

    Apache Flink 1.12.0 正式发布 Apache Flink 社区很荣幸地宣布 Flink 1.12.0 版本正式发布!近 300 位贡献者参与了 Flink 1.12.0 的开发,提交 ...