UI自动化测试:为什么找不到属性,为什么找不到模块???

AttributeError:‘module’object has no attribute ‘xxxxx’
ImportError: cannot import name xxxxx

对于很多的刚入自动化测试的小白来说,这两个问题真是头疼,我的包好好的,模块也好好的为什么还找不到这个模块呢!!!!
首先你一定要搞明白python里面的模块本质到底是什么,他就是py文件!!!以json模块为例,你使用的解码,加码 ,decoder和encoder
这里写图片描述

python脚本文件有两种调用方式,一种是以模块的方式被导入使用

from selenium import webdriver

另一种就是直接执行

if '__name__' == '__main__'

未安装对应模块

这种情况一般是我们未安装对应的模块,比如python我们没有安装Selenium,谈何从Selenium导入模块呢

属性名写错

本来某个属性叫TestCase,你敲代码敲成testCase,找不到也正常

存在重名文件

下面直接上两个图(来自于群友)来告诉你
这里写图片描述
刚刚说过的模块就是py文件,这里的文件叫‘mysql.py’显然在python的Lib文件夹下已经存在了一个mysql.py 当然就凌乱了

这里写图片描述
同样的在某个文件夹下存在一个用户新建的unittest.py的文件,也凌乱了
这里敲重点,文件命名要规范,然后也要理解基础的一些知识,了解python模块导入

转自:http://www.jb51.net/article/120862.htm?utm_medium=referral
Python 解释器查找包的顺序是什么
解释器查找包,首先搜索 built-in module,其次搜索 sys.path ,这样的查找顺序将会导致同名包或模块被遮蔽。

#ls
├── os.py
├── test2.py
├── redis.py
#test2.py
import os
from redis import Redis
#execute test2.py
Traceback (most recent call last):
 File "/Users/x/workspace/blog-code/p2016_05_28_python_path_find/test2.py", line 1, in <module>
 from redis import Redis
ImportError: cannot import name Redis

ls

├── os.py
├── test2.py
├── redis.py

test2.py

import os
from redis import Redis

execute test2.py

Traceback (most recent call last):
File “/Users/x/workspace/blog-code/p2016_05_28_python_path_find/test2.py”, line 1, in
from redis import Redis
ImportError: cannot import name Redis

由于 os 是 built-in module,即使在同目录下有同名模块,解释器依然可以找到正确的 os 模块,可以证实 built-in module 不会被遮蔽,而 redis 属于第三方模块,默认安装位置是 Python 环境变量中的 site-packages,解释器启动之后会将此目录中的内容加入 sys.path,由于当前目录会在 sys.path 的首位,当前目录的 redis 优先被找到,site-packages 中的 redis 模块被遮蔽了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值