OneTimeSetUpAttribute has 2 uses.
In the 1st, it marks a method in a test fixture that's run once before any other tests in that fixture. that is how you're using it, by inheriting from a base class. The OneTimeSetUp appears, thanks to an inheritance, in each of your derived fixtures but it's still run multiple times, once for each fixture.
The second use is in a SetUpFixture. If you create a SetUpFixture in a particular namespace, it's OneTimeSetUp method can run once, before the other tests in this namespace. If you create the SetUpFixture outside of any namespace, then its OneTimeSetUp will run once before any tests in the assembly.
For more info about SetUpFixture, see the docs.