Estoy de acuerdo con la idea de que las pruebas no se pueden pedir. En algunos casos ayuda (¡es más fácil!) Tenerlos en orden ... después de todo, esa es la razón de la 'unidad' en UnitTest.
Dicho esto, una alternativa es usar objetos de simulación para crear fallas y aplicar parches a los elementos que deben ejecutarse antes de ese código específico bajo prueba. También puedes poner una función ficticia para parchear tu código. Para obtener más información, consulte Mock, que ahora forma parte de la biblioteca estándar. Mock
Aquí hay algunos videos de YouTube si no ha utilizado antes Mock.
Video 1
Video 2
Video 3
Más al punto, trate de usar métodos de la clase a la estructura de su código, a continuación, colocar todos los métodos de la clase en un método de ensayo principal.
import unittest
import sqlite3
class MyOrderedTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.create_db()
cls.setup_draft()
cls.draft_one()
cls.draft_two()
cls.draft_three()
@classmethod
def create_db(cls):
cls.conn = sqlite3.connect(":memory:")
@classmethod
def setup_draft(cls):
cls.conn.execute("CREATE TABLE players ('draftid' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'first', 'last')")
@classmethod
def draft_one(cls):
player = ("Hakeem", "Olajuwon")
cls.conn.execute("INSERT INTO players (first, last) VALUES (?, ?)", player)
@classmethod
def draft_two(cls):
player = ("Sam", "Bowie")
cls.conn.execute("INSERT INTO players (first, last) VALUES (?, ?)", player)
@classmethod
def draft_three(cls):
player = ("Michael", "Jordan")
cls.conn.execute("INSERT INTO players (first, last) VALUES (?, ?)", player)
def test_unordered_one(self):
cur = self.conn.execute("SELECT * from players")
draft = [(1, u'Hakeem', u'Olajuwon'), (2, u'Sam', u'Bowie'), (3, u'Michael', u'Jordan')]
query = cur.fetchall()
print query
self.assertListEqual(query, draft)
def test_unordered_two(self):
cur = self.conn.execute("SELECT first, last FROM players WHERE draftid=3")
result = cur.fetchone()
third = " ".join(result)
print third
self.assertEqual(third, "Michael Jordan")
posible duplicado de [cambio de orden de pruebas unitarias en Python] (http://stackoverflow.com/questions/4005695/change-order-of-unit-tests-in-python) –
Tenga en cuenta que el orden en el que el se ejecutarán varios casos de prueba se determina clasificando los nombres de la función de prueba con respecto al ordenamiento integrado de las cadenas. http://docs.python.org/library/unittest.html – morsik