我有一个类似于此的类结构的包.
Base
class是一个典型的,简单的父类,用于几个单独的层次结构.
我的包布局如下所示:
__init__.py (empty)
base.py
ab.py
cd.py
ef.py
Run Code Online (Sandbox Code Playgroud)
将Base
类放入__init__.py
而不是仅为一个类创建单独的模块是一个好主意还是一个好习惯?通过这种方式,我不需要每次都在模块中导入它.
我正在读这个叫做的新工具pipenv
,无法理解这个工具的用例。
setup.py
和requirements.txt
。tox
和virtualenv
。pip
,因为pipenv开发人员并不关心此功能那么,另一个具有不同语法的工具和配置文件又有什么意义呢?pipenv
解决什么问题?
我正在学习如何使用 Pytest(以及一般的单元测试),我想编写一个测试来检查同一类的两个对象是否具有相同的属性。
例子:
class Something(object):
def __init__(self, a, b):
self.a, self.b = a, b
def __repr__(self):
return 'Something(a={}, b={})'.format(self.a, self.b)
def test_equality():
obj1 = Something(1, 2)
obj2 = Something(1, 2)
assert obj1.a == obj2.a
assert obj1 == obj2
Run Code Online (Sandbox Code Playgroud)
此测试失败并在第三个断言中出现 AssertionError:
def test_equality():
obj1 = Something(1, 2)
obj2 = Something(1, 2)
assert obj1.a == obj2.a
assert obj1.b == obj2.b
> assert obj1 == obj2
E assert Something(a=1, b=2) == Something(a=1, b=2)
tests/test_model.py:13: AssertionError
Run Code Online (Sandbox Code Playgroud)
在 Python 或 Pytest 中可以只使用assert obj1 == …