ValueError: no such test method in <class 'myapp.tests.SessionTestCase'>: runTest
python, unit-testing
Solution
`unittest` does deep black magic -- if you choose to use it to run your unit-tests (I do, since this way I can use a very powerful battery of test runners &c integrated into the build system at my workplace, but there are definitely worthwhile alternatives), you'd better play by its rules.
In this case, I'd simply have `EditProfileTestCase` derive from `LoginTestCase` (rather than directly from `unittest.TestCase`). If there are some parts of `LoginTestCase` that you do want to also test in the different environment of `EditProfileTestCase`, and others that you don't, it's a simple matter to refactor `LoginTestCase` into those two parts (possibly using multiple inheritance) and if some things need to happen slightly differently in the two cases, factor them out into auxiliary "hook methods" (in a "Template Method" design pattern) -- I use all of these approaches often to diminish boilerplate and increase reuse in the copious unit tests I always write (if I have unit-test coverage < 95%, I always feel truly uneasy -- below 90%, I start to feel physically sick;-).
Problem
I have a test case: ``` class LoginTestCase(unittest.TestCase): ... ``` I'd like to use it in a different test case: ``` class EditProfileTestCase(unittest.TestCase): def __init__(self): self.t = LoginTestCase() self.t.login() ``` This raises: ``` ValueError: no such test method in <class 'LoginTest: runTest` ``` I looked at the unittest code where the exception is being called, and it looks like the tests aren't supposed to be written this way. Is there a standard way to write something you'd like tested so that it can be reused by later tests? Or is there a workaround? I've added an empty `runTest` method to `LoginTest` as a dubious workaround for now.