TST: Added regression test
- [x] closes #10329
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Hello @MomIsBestFriend! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:



There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2020-04-03 09:15:17 UTC @MomIsBestFriend is moving this to tests.arithmetic something you're up for?  (theres lots more that needs attention in that directory, so getting comfortable with the box_with_array pattern there would be worthwhile) @jbrockmendel I have to be honest here, I have tried to refactor the test case to use ```box_with_array```, But unfortunately I couldn't make it, just seems odd to me, plus it's kinda lacking a documentation, so it's hard for me to do so, if you have patience I would love if you could guide me a bit on how to do so. > I have tried to refactor the test case to use box_with_array, But unfortunately I couldn't make it

I appreciate that you gave it a shot despite the lacking documentation.

The background: until relatively recently, we had separate arithmetic tests for Series/DataFrame/Index, and no systematic way of checking that these all behave the same (and in fact, they didnt).  So we've been collecting arithmetic tests in tests.arithmetic and parametrizing over box_with_array (which is roughly just `[DataFrame, Series, Index, pd.array]`) to ensure that the behavior is internally consistent.  As a result, we have a ton of tests there that are either duplicative or not fully parametrized.

The general pattern is to start with a test for just, say, Series:

```
def test_my_test():
     obj = pd.Series(...)
     other = ...
     expected = pd.Series(...)

     result = op(obj, other)
     tm.assert_series_equal(result, expected)
```

Parametrizing this over box_with_array would look like:

```
def test_my_test(box_with_array):
     obj = pd.Series(...)
     other = ...
     expected = pd.Series(...)  # <-- up to here, this can be copy/paste from the other version

     obj = tm.box_expected(obj, box_with_array)
     expected = tm.box_expected(expected, box_with_array)

     result = op(obj, other)
     tm.assert_equal(result, expected)
```

Does that help?

Note: for exposition this example is implicitly assuming that `obj` has a datetimelike dtype and that `other` is a scalar. Can you add a `time` scalar to the `other` parametrization in test_dt64arr_add_sub_invalid?

This is looking really good, thanks. lgtm. @jbrockmendel if any comments. Looks like tests are failing on some paths that go through numexpr @MomIsBestFriend 

can you merge master and see if you can get this to passing LGTM thanks @MomIsBestFriend 