擅长:python、mysql、java
<h2>差异#1</h2>
<p>第一种方法。<code>conn</code>是<code>TestRethink</code>类的类成员。在</p>
<p>在第二种方法(<code>unittest</code>方法)中,<code>TestRethink</code>的每个子类都将有它自己的连接实例。在</p>
<p>使用<code>@classmethod</code>时的差异示例:</p>
<pre><code>class A(object):
@classmethod
def setup(cls):
cls.conn = 'my connection for %r' % cls
class B(A):
pass
class C(A):
pass
# setup the tests
B.setup()
C.setup()
b = B()
c = C()
print(b.conn)
print(c.conn)
</code></pre>
<p>此代码输出:</p>
^{pr2}$
<h2>差异#2</h2>
<p><code>unittest</code>将在设置子类期间处理异常,并将打印有关失败的详细信息,这将更容易调试测试失败的原因。在</p>
<p>我建议使用<code>unittest</code>方法,或者尝试使用<a href="http://docs.pytest.org/en/latest/" rel="nofollow noreferrer">^{<cd9>}</a>模块,它有很好的API来处理fixture。在</p>