Formula field is calculated on the fly and the values will be available after record is committed to database.
Before saving the Opportunity ie. in before insert and update, you are checking Opportunity values, which are not available.
So, in this case, related_Partner_Supplier__c
is always null
.
2nd thing, your trigger is not bulkified. It is always taking first account's id.
3rd thing, you have unnecessarily used DML statements in test method:
Opportunity g = new Opportunity (Name = 'testOpp',
AccountId = a.Id,
Amount = 250,
StageName = 'new',
CloseDate = date.today(),
related_Partner_Supplier__c = a.Id);
insert g;
update a; //why it is needed?
update g; //why it is needed?