Test pass shouldn't require both test_step and test_end
🐛 Bug
trainer.test(...) requires implementation of both test_step and test_end, but the warning says you only need to implement either or both.

  
    
      pytorch-lightning/pytorch_lightning/trainer/evaluation_loop.py
    
    
         Line 291
      in
      56dddf9
    
  
  
    

        
          
           if test and not (self.is_overriden('test_step') and self.is_overriden('test_end')): 
        
    
  


To Reproduce
Run .test() on any LightningModule with only test_step or test_end implemented.
Code sample
import torch
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torchvision.datasets import MNIST

import pytorch_lightning as pl


class CoolSystem(pl.LightningModule):
    def __init__(self):
        super(CoolSystem, self).__init__()
        self.l1 = torch.nn.Linear(28 * 28, 10)

    def forward(self, x):
        return torch.relu(self.l1(x.view(x.size(0), -1)))

    def training_step(self, batch, batch_nb):
        x, y = batch
        y_hat = self.forward(x)
        loss = F.cross_entropy(y_hat, y)
        return {'loss': loss}

    def test_step(self, batch, batch_idx):
        x, y = batch
        y_hat = self.forward(x)
        return {'test_loss': F.cross_entropy(y_hat, y)}

    def configure_optimizers(self):
        return torch.optim.Adam(self.parameters(), lr=0.02)

    @pl.data_loader
    def train_dataloader(self):
        return DataLoader(MNIST('./', train=True, download=True), batch_size=32)

    @pl.data_loader
    def test_dataloader(self):
        return DataLoader(MNIST('./', train=False, download=True), batch_size=32)


model = CoolSystem()
trainer = pl.Trainer(max_epochs=2, val_percent_check=1)
trainer.test(model)
Expected behaviour
Test pass runs should run with either implemented or when at least test_step is.