public void TestCaseRunTestsWithTest() { using (var analyzer = MakeTestAnalyzer()) { var entry = AddModule(analyzer, "__main__", @"import unittest class TestBase(unittest.TestCase): def test_1(self): pass def runTest(self): pass "); entry.Analyze(CancellationToken.None, true); analyzer.AnalyzeQueuedEntries(CancellationToken.None); var test = TestAnalyzer.GetTestCases(entry).ToList(); AssertUtil.ContainsExactly(test.Select(t => t.MethodName), "test_1"); } }
public void TestCaseRunTests() { using (var analyzer = MakeTestAnalyzer()) { var entry = AddModule(analyzer, "__main__", @"import unittest class TestBase(unittest.TestCase): def runTests(self): pass # should not discover this as it isn't runTest or test* def runTest(self): pass "); entry.Analyze(CancellationToken.None, true); analyzer.AnalyzeQueuedEntries(CancellationToken.None); var test = TestAnalyzer.GetTestCases(entry).ToList(); AssertUtil.ContainsExactly(test.Select(t => t.ClassName), "TestBase"); } }
public void TestCaseSubclasses() { using (var analyzer = MakeTestAnalyzer()) { var entry1 = AddModule(analyzer, "Pkg.SubPkg", @"import unittest class TestBase(unittest.TestCase): pass "); var entry2 = AddModule( analyzer, "Pkg", moduleFile: "Pkg\\__init__.py", code: @"from .SubPkg import TestBase" ); var entry3 = AddModule(analyzer, "__main__", @"from Pkg.SubPkg import TestBase as TB1 from Pkg import TestBase as TB2 from Pkg import * class MyTest1(TB1): def test1(self): pass class MyTest2(TB2): def test2(self): pass class MyTest3(TestBase): def test3(self): pass "); entry1.Analyze(CancellationToken.None, true); entry2.Analyze(CancellationToken.None, true); entry3.Analyze(CancellationToken.None, true); analyzer.AnalyzeQueuedEntries(CancellationToken.None); var test = TestAnalyzer.GetTestCases(entry3).ToList(); AssertUtil.ContainsExactly(test.Select(t => t.MethodName), "test1", "test2", "test3"); } }
public void DecoratedTests() { using (var analyzer = MakeTestAnalyzer()) { var entry = AddModule(analyzer, "Fob", @"import unittest def decorator(fn): def wrapped(*args, **kwargs): return fn(*args, **kwargs) return wrapped class MyTest(unittest.TestCase): @decorator def testAbc(self): pass "); entry.Analyze(CancellationToken.None, true); analyzer.AnalyzeQueuedEntries(CancellationToken.None); var test = TestAnalyzer.GetTestCases(entry).Single(); Assert.AreEqual("testAbc", test.MethodName); Assert.AreEqual(10, test.StartLine); } }