Selenium 基于 py 封装的 selenium,case 之间无法互相调用,望大佬给看看

余霞成尔,夜无风雪 · 2018年07月10日 · 最后由 陈子昂 回复于 2018年07月11日 · 2631 次阅读


baseCase.py 主要是把 setup 和 teardown 单独提取出来放在一个 py 文件中,避免每个 test 都写,减少重复。

baidu_search_page_case.py 主要是 test,通过继承 baseCase 来在 setup 执行后执行 test,以及引入 page 代码,如下

,第二个 cese 想调用上面的 case,但是调用时报了如下的错,目前看是 driver 传递的问题,可是不知道该怎么改,求大神帮忙

共收到 6 条回复 时间 点赞
  1. 你这个命名相当的不规范, from case.baidu_search_page_case import baidu_search_page_case 我看了半天才发现导进来是 class。😂
  2. baidu_search_page_case 这个类你定义过 init() 这个方法吗?没有的话为啥要在初始化的时候传入 self.driver
  3. 这个报错提示很明确了,在 D:\python\lib\unittest\case.py 这个模块里定义了 init() 方法 并且里面有一段代码testMethod = getter(self, methodNme) 这个 methodName 是要一个 string 类型

这个问题很明显是你 from case.XXXX 时,解释器判断错了目录位置,你改成这样试试 from .case.XXXXX

python 基础要好好补补啊。

chen 回复

1.习惯了首字母不大写😅 😅
2.这个是想传递 driver
3.这是 unittest 内部函数,没搞懂哪错了,虽然报错了
4.引包时习惯了写包名,没用相对地址

请参照 pep8 代码规范,不规范的 code 看的累😂
想传 driver 那也有地方接啊,我是没看到接的地方。
包名和内部函数重复了,用相对引用应该解决问题。

chen 回复

谢谢,这个重复的问题还真没注意,谢谢谢谢

chen 回复


这两个地方需要 driver

用 discover 去读覆盖文件夹。
第一个符合 cmp 的文件执行 setUpClass(cls)
最后一个执行 tearDownClass(cls)

余霞成尔,夜无风雪 关闭了讨论 08月19日 15:02
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册